![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio zacząłem czytam o programowaniu obiektowym trochę w necie. Napisałem sobie pierwszą klasę, która ma być odpowiedzialna za obsługę artykułów (tworzenie newsów, kategorii, administrację).
Czy sądzicie że dobrze zaczynam? Czy to jest programowanie obiektowe, czy tylko pseudo-obiektowe? Co muszę poprawić, na co zwrócić uwagę ![]() -------------------- www.WielkaWyspa.com.pl - portal dla mieszkańców Wielkiej Wyspy Wrocław
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 25 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zwróć uwagę na to żeby oddzielić warstwe prezentacji od pobierania i przetwarzania danych....
Czyli do klasy ładujesz metody które służą do pobierania danych, a nie do ich wyświetlania, np:
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Czy sądzicie że dobrze zaczynam? Czy to jest programowanie obiektowe, czy tylko pseudo-obiektowe? Co muszę poprawić, na co zwrócić uwagę ![]() No niestety jest to do bani. - to co próbowałeś napisać to php4, zainteresuj się php5 - jak kolega napisał wyżej wzorzec MVC -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
... a można powiedzieć chociaż że to co napisałem jest zalążkiem programowania obiektowego??
Akurat wykorzystałem tę moją klasę do implementacji strony i wszystko działa. Jakie są konsekwencje takiej implementacji. Są poważne zagrożenia dla bezpieczeństwa albo poprawnego działania? Ten post edytował barii 15.04.2010, 09:31:29 -------------------- www.WielkaWyspa.com.pl - portal dla mieszkańców Wielkiej Wyspy Wrocław
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Napisze jasno: Twoja klasa to nic innego, jak zwykły, przestarzały, prowizoryczny, amatorski itp. itd. etc. skrypt, który wyróżnia się tylko tym, że został upakowany w klamry poprzedzone słowem kluczowym "class" i podzielony na funkcje. Powiem więcej - klasa wręcz utrudnia utrzymanie takiego kodu! Lepszy logiczny kod strukturalny, niż obiektowa sieka bez ładu i składu!
Odpowiedz sobie na pytania: - jaka jest przewaga/zaleta tego kodu w porównaniu z identycznym, lecz nie podzielonym na klasę i funkcje? - czy zaimplementowanie tej klasy do obsługi artykułów w serwisie x.com będzie łatwe, czy trudne? - albo inaczej, który kod jest lepszy:
Masz pisać aplikacje na warstwach: 1. Odbierasz dane i parametry z url, post, cfg 2. Przygotowujesz treść i meta (często używa się tu nazwy silnik - to zasadnicza część aplikacji, nie zawiera kodu html) 3. Upychasz to w kod html 4. Wysyłasz stronę do przeglądarki Jaki sens pisać klasę czy funkcję, która drukuje coś na ekranie?? Na początek wywal z silnika chociaż echo i html, poczytaj trochę o obiektówce, wykorzystaj wzorce i dziedziczenie, konstruktory, metody dostępowe i wiele innych zalet obiektówki. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czyli np. komunikaty robić:
1. wpisać do zmiennej
2. a potem dopiero w innej metodzie czy klasie zrobić wyświetlenie zmiennej $info ![]() -------------------- www.WielkaWyspa.com.pl - portal dla mieszkańców Wielkiej Wyspy Wrocław
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli jakaś metoda nie może zakończyć się poprawnie powinna wyrzucić wyjątek.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
ok. Musze poczytać o tych wyjątkach jeszcze. Ale czy teraz zacząłem lepiej kumać. W funkcji która jest silnikiem mam robić przypisania do zmiennych a potem dopiero w innych funkcjach korzystać z tych danych ?
-------------------- www.WielkaWyspa.com.pl - portal dla mieszkańców Wielkiej Wyspy Wrocław
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Tak. I podzielić to funkcjonalnie:
1. Obróbka parametrów, generowanie meta-tagów, słów kluczowych etc. 2. Model danych - tu będą zapytania do bazy 3. Widok - w najprostszej postaci system szablonów via PHP: - w ten sposób obsługa i walidacja parametrów/adresów/konfigów jest w jednym miejscu (czyli całe "wejście"), zapytania do bazy w drugim a kod html w trzecim, oczywiście łączy to kontroler, który na podstawie otrzymanych parametrów korzysta z określonych modeli danych, pakuje pobraną przy ich pomocy treść w zmienne i wysyła do widoku - w ten sposób powstaje przejrzysty kod łatwy w utrzymaniu i rozbudowie. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 16.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
...czyli każdą warstwę mam podzielić na osobną klasę? Czy wystarczy jak podzielę na metody...?
Ten post edytował barii 18.04.2010, 22:02:52 -------------------- www.WielkaWyspa.com.pl - portal dla mieszkańców Wielkiej Wyspy Wrocław
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Zależy jak to ma funkcjonować, integralna część jakiejś większej aplikacji czy tylko moduł do niej? Najlepiej każdą warstwę w oddzielnym pliku, a jeden plik = jedna klasa/funkcja (nazwa pliku = nazwa klasy/funkcji), dzięki czemu każdy od razu połapie się w kodzie, będzie to łatwe do rozbudowy/modyfikacji czy implementacji.
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
Ok ja tez się dorzucę. Jest to programowanie pseudo obiektowe. Ale bardzo dobrze, że próbujesz nie od razu Rzym zbudowano, z czasem Twój kod będzie dużo lepszy.
Twój kod niestety nie jest kodem obiektowym. I można to stwierdzić to zanim nawet człowiek spojrzy na pierwszą jego linijkę. Dobry obiekt ma bardzo wąska odpowiedzialnośc a Ty już na wstępie piszesz: Cytat Napisałem sobie pierwszą klasę, która ma być odpowiedzialna za obsługę artykułów (tworzenie newsów, kategorii, administrację) Za dużo odpowiedzialności, zresztą wyimaginowanej bo Twój obiekt w najlepszym razie odpowiada za dostęp do danych i za nic więcej. Jest to nieprzemyślana hybryda Active Record z wmieszanymi elementami prezentacji danych. Fuj! ![]() Zainteresuj się MVC, a póki co, może zrób z tego co masz dwa obiekty niech jeden pobiera dane a drugi wyświetla dane które pobrał pierwszy. I jeszcze uwaga: Crozin: Cytat Jeżeli jakaś metoda nie może zakończyć się poprawnie powinna wyrzucić wyjątek. To nie jest prawda... Prawdziwsze jest stwierdzenie: Jeżeli wykonywanie jakiejś metody może zakończyć się błędem, przy czym jest to błąd, nad którym programista piszący dany kod nie ma kontroli (np. kod korzysta z zasobów zewnętrznych, które mogą być niedostępne) to należy wyrzucić wyjątek (obsłużony w innym miejscu programu). Panie Crozin, warto chyba ubrać to co się chce powiedzieć w parę zdań tak aby to miało ręce i nogi, a nie rzucać sentencje w tylu "Jak się jest głodnym to trzeba zjeść"... -------------------- .:SMENTEK:.
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat o nie jest prawda... Prawdziwsze jest stwierdzenie: Tak na dobrą sprawę to to co napisałeś jest dokładnie tym samym co podałem ja.Jeżeli wykonywanie jakiejś metody może zakończyć się błędem, przy czym jest to błąd, nad którym programista piszący dany kod nie ma kontroli (np. kod korzysta z zasobów zewnętrznych, które mogą być niedostępne) to należy wyrzucić wyjątek (obsłużony w innym miejscu programu). Panie Crozin, warto chyba ubrać to co się chce powiedzieć w parę zdań tak aby to miało ręce i nogi, a nie rzucać sentencje w tylu "Jak się jest głodnym to trzeba zjeść"... A sentencja "głodny -> zjedz coś" jest przecież jak najbardziej poprawna. Nie ma sensu się rozpisywać co to znaczy być głodnym, ani co to znaczy zjeść coś. Jak odbiorca nie będzie czegoś pewny to sobie wygooglea albo poprosi o doprecyzowanie odpowiedzi. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:11 |