Dzisiaj ostatni wpis dotyczący programowania zgodnego z Zend. Będzie mowa o dokumentacji. Sporo informacji będzie pochodziło z Czystego Kodu [dalej CK].
Przede wszystkim bloki dokumentacji muszą być zgodne z formatem phpDocumentor, czyli
/**
* Coś tam dokumentuję...
*/
Współczesne IDE nie mają problemu z pilnowaniem zgodności z tym formatem. Wpisujesz /** naciskasz Enter i masz ładny blok dokumentacji. Drugi sposób to wszystkim znane komentarze inline tworzone poprzez // przed treścią komentarza.
Zend Framework wymaga od nas umieszczenia dokumentacji w trzech miejscach: na początku pliku, przed każdą klasą i przed każdą metodą. W dokumentacji ZF podano elementy, które powinny wchodzić w skład bloków. Nie będę tego powtarzał. Zwrócę uwagę tylko na to, że typy parametrów i wartości zwracane przez funkcje są również obligatoryjne.
Większość komentarzy jest zła. Im szybciej to przyznacie tym lepiej.
Zgodnie z CK komentarze w większości służą nam do wytłumaczenia się z błędów/niedoskonałości naszego kodu. Kod powinien być na tyle przejrzysty, żeby komenty nie były wcale potrzebne. Czas poświęcany na pisanie dokumentacji lepiej przeznaczyć na poprawki kodu. Łatwo rzucać slogany, trudniej zrobić. Na poziomie jednej klasy często dobry efekt udaje się uzyskać poprzez rozparcelowanie długiej funkcji na kilka mniejszych i użycie bardziej opisowych nazw.
Wielce niewskazana jest redundancja, czyli nadmiarowość informacji. Jeżeli nazwa funkcji jest wystarczająco znacząca to rzeczywiście nie ma sensu powtarzać tego samego. Raz, że uczy nas podświadomego pomijania dokumentacji (no bo po co coś czytać skoro jest oczywiste?), a dwa, że komentarze często nie nadążają za zmianami w kodzie. Stary koment smrodzi bardziej niż jego brak
O ile CK dotyczy Javy, a więc silnie typowanego języka (zawsze wiemy jakiego typu jest zmienna czy parametr i co zwraca metoda), o tyle w PHP musimy używać dokumentacji do tego celu. Autor CK często daje znać, że jeżeli kod jest jasny to po co go komentować?
Sporo rzeczy robi za nas system kontroli wersji. Unikamy brzydkiego komentowania już niepotrzebnego kodu oraz nie kusi nas wprowadzanie dziennika zmian do komentarzy. W razie potrzeb oglądamy sobie starą wersję pliku lub czytamy tekst z commitu. Osobiście używam Bazaara do swoich projektów (minimum ustawiania, dostępny pod Windows i Linux).
Dobry komentarz to np. wyróżnienie rzeczy pozornie nieistotnej, informacja co jest jeszcze do zrobienia (tzw. TODO) lub też przykład dopasowania wyrażenia regularnego. Przydatne jest również stworzenie porządnego API publicznego (wyobrażacie sobie napisać cokolwiek w Javie bez API?)
