Foobar case, czyli o nazewnictwie zmiennych


Jeżeli miałabym z perspektywy czasu ocenić treści, których najbardziej brakowało w programie moich studiów, dobre praktyki byłyby na pierwszym miejscu. Szczególnie widać to było po nazewnictwie zmiennych. Sięgając pamięcią wstecz, nie przypominam sobie żadnej znaczącej nazwy w swoich aplikacjach z czasów studenckich, jedynie całe rzesze "i", "xyz", "foo" i rozmaitego rodzaju magicznych liczb.


DLACZEGO NAZEWNICTWO JEST WAŻNE?

Poprawne nazywanie zmiennych jest po latach pracy z legacy code jak oddychanie - nie zastanawiam się nad tym, po prostu to robię, wiedziona instynktem przetrwania. Ktokolwiek utknął kiedyś w gąszczu kodu pełnego zabawnych zmiennych w stylu dupa2, foo - bar, chckCzyPrwd doskonale rozumie, o co mi chodzi.

Nazywanie zmiennych (i stałych!) zgodnie ze stanem faktycznym to zarazem dokładne opisanie danych, jakie w sobie niosą. 

Kiedy piszemy kod, zazwyczaj jest on dla nas zrozumiały, ale stan ten nie trwa wiecznie i na pewno nie dotyczy osób innych niż twórca. Bardzo często przecież już następnego dnia rano nie jesteśmy pewni, co mieliśmy na myśli we wczorajszym commicie za pięć szesnasta. Nie wspominając o tym jakim węzłem gordyjskim potrafi stać się kod dziesięcioletni...

Wszystko sprowadza się do tego, że kod, o którego funkcji nie pamiętamy, musimy przeczytać i zrozumieć. Jest to o wiele łatwiejsze, kiedy zmienne, stałe i metody są nazwane zgodnie ze swoją rzeczywistą rolą.

O tym pisałam już wielokrotnie, ale powtórzę - programowanie jest w tej chwili sportem zespołowym. Nasz kod musi być czytelny - nie tylko dla nas, ale i dla wszystkich innych, którzy będą z nim pracowali w bliżej nieokreślonej przyszłości.

KONWENCJE

Ze względu na to, że poprawne nazwy zmiennych są często rozbudowane i złożone z kilku słów, a żaden (no, co najmniej większość) języków programowania nie dopuszcza używania w tym przypadku spacji, powstało wiele konwencji, które pomagają obejść ten problem.

Chyba najpopularniejszy obecnie, przynajmniej w JS, jest camelCase, gdzie pierwsze słowo zaczynamy z małej litery, a każde kolejne z dużej (np. czyNazwaZmiennejJestCzytelna).

W PascalCase każde słowo zaczyna się z dużej litery (CzyNazwaZmiennejJestCzytelna). Jest on często używany między innymi w języku C.

kebab-case najczęściej spotykamy w atrybutach HTML i CSS (czy-nazwa-zmiennej-jest-czytelna).

snake_case z kolei pojawia się powszechnie w SQL (czy_nazwa_zmiennej_jest_czytelna).

Używanie określonej konwencji ułatwia zachowanie jednolitych nazw w całym programie oraz znacząco zwiększa czytelność kodu.

ZASADY POPRAWNEGO NAZEWNICTWA

Przede wszystkim, co wynika już z powyższych akapitów, poprawna nazwa powinna być jasna i zrozumiała. Ulubionym argumentem autorów nieznaczących nazw zmiennych jest mniejsza liczba liter, ale szybkość pisania nigdy nie powinna być ważniejsza od stopnia zrozumiałości kodu.

Jednocześnie nazwy zmiennych powinny być możliwie zwięzłe i konkretne. Nie jest to z pewnością miejsce na kwieciste opisy.

Jak już zostało wyżej wspomniane, wartością dodaną jest z pewnością jednolitość przyjętej konwencji nazewnictwa w całym kodzie. Ułatwia po prostu orientację oraz zwiększa czytelność.

Jak się mają Wasze zmienne? Czy ich nazwy spełniają podane trzy złote zasady? Może już od czasów studenckich (techników) dbacie o czytelność kodu? A może jesteście w przeciwnym obozie?

Komentarze