Notacja węgierska
Chyba nikomu nie trzeba tłumaczyć jak ważną rzeczą jest przejrzystość kodu. Niestety wielu młodych, ale także doświadczonych programistów ma z tym duży, żeby nie powiedzieć ogromny problem.
Dlatego bardzo często stosuje się notację węgierską, która ma za zadanie ułatwić programiście szybkie zrozumienie jakiego typu jest dana zmienna. Moim zdaniem w php najlepiej sprawdza się wzór jednoliterowy, poprzedzający nazwę zmiennej (szybki, krótki i prosty do zapamiętania).
$aArray - tablica $bBool - przyjmuje dwie wartości: prawda lub fałsz $iInt - liczba całkowita $fFloat - liczba zmiennoprzecinkowa $mMixed - jeśli nie wiemy jakiego typu będzie zmienna, albo się zmienia $oObject - obiekt $rHandle - uchwyt do jakiegoś zasobu, np. do pliku $sString - fraza, wyraz, zdanie
PHP jest dość często krytykowane za brak konsekwencji w nazewnictwie funkcji. Np. część jest pisana z podkreślnikami, a część nie. W wyniku tego powstał projekt OGO, który postanowił oczyścić PHP i zaproponował nową listę nazw funkcji. Niestety nie posiadam informacji czy kiedykolwiek wejdzie on w życie.
Także nie popełniajmy błędów programistów php i ustalmy jedną konwencję nazywania funkcji i trzymajmy się go przy pisaniu całego skryptu. To samo się tyczy miejsc wstawiania klamr po funkcjach, pętlach, warunkach, sposobu wstawiania komentarzy czy też pustych linii.
Na koniec jeszcze link do propozycji standardu programowania przedstawionego przez pear. Serdecznie polecam.
Słowa kluczowe: Projektowanie, kod, notacja węgierska, styl, artykuł, blog

Komentarze i opinie
Notacja węgierska ssie. Zmienne i funkcje powinny się tak nazywać, żeby od razu było wiadomo po co są i jakie są.
Niestety nie zawsze się da, aby nazwa zmiennej odzwierciedlała co zawiera jak to określiłem "od razu". Np. $formularz - to obiekt, który generuje formularz czy string zawierający html formularza.
Po to mamy phpDoc'a.
Co lepsze IDE potrafi go używać.
$form_generator vs $form_html. Jeśli reszta kodu jest przejrzysta to i często samo $formularz wystarczy, żeby było wiadomo o co chodzi.
Bo jak będzie $sFormularz, to i tak nic nie mówi. Wiadomo, że string, ale nie wiadomo, czy to HTML, czy to jakiś identyfikator, czy jeszcze coś innego. No i CamelCase ssie.
No ja akurat jestem zwolennikiem CamelCase... Wg. mnie lepiej wygląda DoItByThis niż do_it_by_this.
jeśli o mnie chodzi, to wolę jednak do_it_by_this, nie wiem skąd moja niechęć do wielbłądów ;-)
a co do notacji węgierskiej: sama nazwa już wskazuje, że zmienne będą niezrozumiałe ( rozumie ktoś węgierski? toż to nawet nie jest język europejski, tylko siakiś azjatycki )
CamelCase przy PHP jest OK, ale...
Pisząc w PHP z regóły chodzi nam o aplikacje webowe, a tam mamy też takie cuś jak CSS...
I tam też można PisaćNa dwa_sposoby- tylko tam CamelCase powoduje troszkę zawirowań (zwłaszcza dla IE).
Cięzko mi się przestawiać z jednej notacji na drugą, więc korzystam z miej eleganckich_rozwiązań
Stosuje CamelCase w PHP, Javie i C++ (choc nie mam pojecia czy i jaka jest konwencja -- C++ uzywam jak musze).
Myslalem ze przyjdzie mi z trudem przestawienie sie na_podkreslenia w Rubym -- a jednak no problem -- inny jezyk, inne konwencje (jezyk rozroznia kontekst zmiennej na podstawie jej nazwy: JakasKlasa, zmienna_x, STALA, $zm_globalna, @@zmienna_klasy, @zmienna_instancji -- zapis krotki i czytelny :)), poza tym nie mieszaja mi sie miedzy soba.
Osobiście zamiast $oObject wolę stosować starą sprawdzoną zasadę, że obiekty nazywamy po prostu z dużej litery, czyli w naszym przypadku $Object. Co do podkreślników i notacji wielbłąda, mówiąc krótko obecnie w PHP notacja wielbłąda jest bardziej trendi ;] Sam ją stosuje i podoba mi się.
PS: Wojna o notacje to standardzik, prawda jest jedna: Nie liczy się notacja, liczy się konsekwencja.
Notacja wegierska jest bardzo dobrym sposobem, jezeli chodzi o PHP. Wiele aplikacji pisze normalnie zmienne (camel czy podkreslenia - to akurat ma male znaczenie). Kiedy przychodzi czytac taki kod bez komentarzy, to mozna sie poplakac. Notacja wegiersja przyspiesza rozumienie kodu.
Jest jeszcze inny aspekt tej notacji - programista, ktory jej uzywa musi miec troche doswiadczenia w PHP, zeby wiedzial co dokladnie moze byc zawartoscia zmiennej. Pomylka typu string/int moze przysporzyc troche problemow w rozumieniu kodu.
Patrz naglowek tego bloga
PHP po cos ma zmienny typ zmiennych. Po kiego grzyba wydziwiac? Dobry kod jest zawsze czytelny, a nazwy zmiennych musza byc po prostu jasne. Zreszta ich uzycie w projekcie dyktuje czytelnikowi ich typ (stringa nie wrzucimy do foreach raczej).
Jak zyje to jeszcze sie nie spotkalem z problemem wynikajacym z nieopisanego typu jakiejs zmiennej. Programista powinien wiedziec, jaki typ zwraca dana funkcja. Jak nie wie, to niech nie probuje polepszyc swiata takimi "standardami". imho
przez przypadek trafilem na ta stronke, przy przeszukiwaniu konwencji wegierskiej i jedno co moge powiedziec:
-co do czystosci generowanego kodu to owszem mozna polemizowac, bo tutaj narzucaja to standardy, wiec posrednio wplywa to na styl programowania (tak odbiegajac od tematu)
Natomiast jesli chodzi zas o jakis wspolny standard zapisow kodow zrodlowych, to tutaj jest juz zupelna dowolnosc pozbawiona logiki (niektorzy zapominaja juz po 2 tyg co mieli na mysli), a niekiedy nawet celowe zagmatwanie uzywajace nie logicznych synonimow, utrudniajace grzebanie w zrodlach osobom postronnym.
Zreszta, nie ma sie czemu dziwic, kazdy szanujacy sie indywidualista uzywa swych "indywidualnych" nalecialosci, co jest niekiedy swego rodzaju podpisem.
Tak wiec , taka dyskusja moze troche przypomianc wyzszosc swiat BozegoNarodzenia od swiat Wielkanocnych.
Nie mniej jednak, warto poswiecic temu czas i zaangazowac sie w poprawnosc budowania kodu nie tylko pod wzgledem merytoryki technicznej, ale rowniez pod wzgledem przejrzystosci zapisow.
Nowy komentarz