W drugiej części napiszę co nieco na temat nazewnictwa klas i metod. Jak nazywać i czego unikać. Do tego na koniec dodam kilka zaleceń Roberta C. Martina z Czystego Kodu [Gliwice : Helion, 2010].
Klasy
Składnikiem nazwy klasy nie powinien być żaden czasownik. Mało tego, nie powinien to być również fragment nazwy implementowanego interfejsu lub klasy nadrzędnej. Stosujemy CamelCase począwszy od dużej litery. Zgodnie z Czystym Kodem lepsza jest dłuższa nazwa klasy/metody niż krótsza plus komentarz wyjaśniający.
W przypadku programowania zgodnego z Zend należałoby nazwę porozdzielać podkreślnikami prowadzącymi przez strukturę katalogów do pliku zawierającego kod klasy, np. Zend_File_Transfer_Adapter_Http
Pola klas
Krótkie nazwy zmiennych typu $i, $j dopuszczalne są tylko w pętlach lub zmiennych lokalnych. Pola klasy również nazywamy zgodnie z CamelCase z tym, że rozpoczynamy od małej litery. Warte zwrócenia uwagi jest to, że pola i metody prywatne w klasie rozpoczynają się od znaku podkreślenia, dzięki czemu od razu widać czy odwołujemy się do metody publicznej czy prywatnej.
Nazwę stałych tworzymy wyłącznie za pomocą dużych liter i podkreślników. Poniżej przykład wzięty z Zend_Filter
const CHAIN_APPEND = 'append';
const CHAIN_PREPEND = 'prepend';
Metody
Przyjęło się kilka konwencji jeżeli chodzi o nazewnictwo metod. Metody mutatorów (tzw. settery) i akcesorów (tzw. gettery), czyli ustawiające i pobierające zmienne obiektu tworzymy poprzez setNazwa($nazwa) i getNazwa().
Innymi powszechnie znanymi metodami są isNazwa() i hasNazwa(). Czyli czy obiekt jest czymś lub czy obiekt ma jakąś własność. Muszą one zwracać wartość typu boolean.
Pamiętamy o tym, że PHP oferuje ograniczone typowanie parametrów. A w tym zakresie, jakie oferuje należy je stosować, czyli możemy wymusić, że przyjmiemy tylko obiekt określonego typu lub implementujący określony interfejs, czyli np. metoda(Trąbka $trąbka) wymusi nam, że obiekt musi być typu Trąbka. Niestety typów prostych typu int czy bool nie możemy wymusić. Zamiast tego pamiętamy zaznaczyć typ w dokumentacji.
W Zend powszechnie stosowany jest rozdział tworzenia obiektu od jego inicjalizacji za pomocą metody init(). Jeżeli na etapie tworzenia obiektu coś się wysypie i konstruktor wyrzuci wyjątek, obiekt nie zostanie utworzony.
Poniżej kilka zaleceń z Czystego Kodu dotyczące metod:
- metoda powinna zajmować do ok. 20 linii kodu,
- powinna wykonywać jedną operację,
- metoda bez parametrów jest zawsze lepsza niż z jednym,
- dopuszczalne jest do 3 parametrów w metodzie; jeżeli jest więcej tzn. że gdzieś popełniliśmy błąd,
- parametr true/false najczęściej oznacza, że metoda robi dwie różne rzeczy i najlepiej rozdzielić ją na dwie osobne,
- dodawanie „na pałę” do każdego pola prywatnego settera i gettera mija się z celem (po co było ustawiać zmienną na private skoro i tak można robić z nią co się chce poprzez settery/gettery),
- bloków try/catch nie należy mieszać z normalnym przetwarzaniem, należy je wydzielić do osobnych funkcji jako mających za zadanie obsługę błędów
