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.1
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
- R. C. Martin : Czysty Kod. Gliwice : Helion, 2010 ↩
Podobne wpisy:
