Dziś jest piątek, 21 listopada 2008 roku (z kalendarza...)

Dobry kod - cd.

Icon

16.06.2006, 08:56

PHP

Komentarze (3)

Powrót

Mały suplement do mojego ostatniego wpisu o dobrym kodzie. Trafiłem dziś na php.pl na tłumaczenie artykułu z Zend.com poświęcone właśnie temu problemowi: Programowanie proceduralne kontra OO w PHP. Autor dość celnie charakteryzuje tam fanatyków zarówno pisania ciurkiem, jak i OOP, a końcowy wniosek nie pozostawia wiele złudzeń: prawda leży pośrodku.

W zeszłym roku, kiedy projekt OpenPB tworzony był zespołowo (no... w teorii), musiałem stoczyć kilka dyskusji z innymi programistami, którzy koniecznie każdą głupotę chcieli za pomocą pięciu różnych wzorców pisać i pięciolinijkową rzecz rozbijać na pięć klas zawartych w pięciu plikach. Obecnie, kiedy grono programistów ograniczone jest w zasadzie tylko do dwóch osób, kod jest właśnie taką mieszanką. Pozornie wygląda na pełne OOP i w ogóle, ale wewnątrz krzyje się cała gama małych uproszczeń. Przykładowo, zestaw klas bazowych potocznie zwany "core" mieści się w trzech plikach:

  • autoloader.php - klasa autoloadera + funkcja startująca. Oczywiście "auto" w nazwie jest tylko częściowe. Autoloadery w pełni automatyczne nadają się jedynie do czyszczenia chlewa, z prostego powodu. Niektóre pakiety, np. OPT, same sobie zarządzają dołączaniem własnych plików i takie uszczęśliwianie ich na siłę kończy się najczęściej zduplikowaniem jakiejś klasy i "Fatal errorem".
  • core.php - wiadomo, cała gama podstawowych klas, w stylu widoku, kontrolera itd.
  • dao.php - szkielet DAO.

PHP ma łatwiejsze zadanie, gdyż zamiast 10 plików, ładuje tylko trzy, a że programista zwykle nie musi do tej części zaglądać, żeby coś w niej modyfikować, wszystko jest w porządku.

Powrót

Komentarze

Napisał Sabistik w niedzielę, 18 czerwca 2006 o 22:02

Ciesze sie ze czasami jednak cos sie u nas podoba ;)

Napisał splatch w wtorek, 20 czerwca 2006 o 19:59

"Niektóre pakiety, np. OPT, same sobie zarządzają dołączaniem własnych plików i takie uszczęśliwianie ich na siłę kończy się najczęściej zduplikowaniem jakiejś klasy i 'Fatal errorem'"

WTF? Przecież autoload nie jest wywoływany dla klas, które już są załadowane..

Napisał Zyx w wtorek, 20 czerwca 2006 o 21:53

Zgadza się, przecież nigdy tego nie negowałem. W tej dyskusji też nie, bo ona nie dotyczy funkcji "autoload", tylko spotykanego gdzieniegdzie autoloadera. Ten dopiero może, acz nie musi, korzystać z dobrodziejstw tej funkcji, ale np. buforuje też zawartość katalogów - zresztą podejrzewam, że nie muszę się dalej rozwodzić i po prostu zaszło małe nieporozumienie.

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia