Nazwę zmiennej powinno się wybierać tak starannie jak imię dla dziecka
Dobrze napisany kod powinno czytać się jak książkę, powiem więcej dobrze napisany kod nie wymaga komentowania. Ewentualnie tak jak w książce mamy przypisy tak powinno się komentować nasz kod, bardzo rzadko. Trzymając się tej analogi nasze zmienne powinny być jak nagłówki w tej książce. Po przeczytaniu takiego nagłówka nawet specjalnie nie musimy zagłębiać się w jego treść. Podobnie z nazwami zmiennych, po zobaczeniu zmiennej getNumberOfProducts
, zaraz w naszej głowie pojawia się wizja metody lub funkcji która zwróci nam ilość produktów, najprawdopodobniej kontekstu w którym się znajdujemy. Z kolei kiedy nasza zmienna wygląda następująco getProducts
i robi to samo, wprowadza w błąd programistę, gdyż każdy spodziewałby się tablicy produktów. Od zawsze powtarzam że kodowaniu najważniejsza jest dokładność! Poniżej postaram Ci się przybliżyć kilka zasad którymi powinieneś się kierować podczas poprawnego doboru nazw dla Twoich zmiennych.
Dobrze określ swoje intencje
O co Ci tak naprawdę chodzi? Po co Ci ta zmienna? Dlaczego istnieje? Co robi? Jak się jej używa?
Źle
const deleteDays; //dni od usunięcia
Dobrze
const daysSinceDelete; //dni od usunięcia
Zmienna deleteDays
nie mówi nam jasno o jakie dni chodzi, pozostawia pole do błędnej interpretacji oraz źle odzwierciedla intencje. Dodatkowo jeżeli użyjemy zmiennej daysSinceDelete
musi ona przechowywać wartość w dniach a nie sekundach, gdyż będzie to nieadekwatne do nazwy zmiennej.
Informuj poprawnie
Jak już używasz skrótów, upewnij się że ten skrót jest powszechny i każdy programista poprawnie go odczyta.
Źle
const sliderImagesTab; //tablica zdjęć slidera
Dobrze
const sliderImagesArr; //tablica zdjęć slidera
sliderImagesTab
używa niepoprawnego skrótu określającego tablicę w językach programowania. Oczywiście końcówka Arr
mogłaby zostać pominięta, gdyż samo sliderImages
powinno odnosić się do tablicy. Napiszę więcej, jeżeli kontekst nam na to pozwala moglibyśmy użyć samej nazwy images
.
Nie twórz nazw zmiennych które nie odróżniają się znacząco, jeżeli jednak bardzo tego potrzebujesz i jesteś pewien że nie ma lepszej metody, różnicę umieść na końcu nazwy
Źle
const getAttributeNameFromActiveImage; //Atrybut name aktywnego zdjęcia
const getAttributeAltFromActiveImage; //Atrybut alt aktywnego zdjęcia
Lepiej
const getFromActiveImageAttributeName; //Atrybut name aktywnego zdjęcia
const getFromActiveImageAttributeAlt; //Atrybut alt aktywnego zdjęcia
Dobrze
const activeImage.getAttributeName; //Atrybut name aktywnego zdjęcia
const activeImage.getAttributeAlt; //Atrybut alt aktywnego zdjęcia
Oczywiście zmienne te są funkcjami, a sama ich nazwa nie jest zadowalająca. Została użyta, aby zobrazować jak możemy zaburzyć sobie czytelność kodu przez użycie zmiennych zbyt podobnych do siebie wizualnie.
Strzeż się zakazanych słów
Unikaj nazywania zmiennych częściami semantycznymi. Niektóre słowa zarezerwowane są dla poszczególnych bytów programistycznych, przykładowo słowo class
nie oznacza grupy czy kategorii. Tyczy się konkretnego elementu programowania.
Źle
const humanClass; //Klasa społeczna człowieka
Dobrze
const humanSocialStatus; //Klasa społeczna człowieka
Podobnie jest ze słowami typu function, array, string
itp. Możesz wprowadzić przez nie w błąd programistę który założy że chodzi Ci o zupełnie inny kontekst nazwy. Dodatkowo pamiętaj że niektóre języki mają swoje zasady nazewnictwa, przykładowo w JS klasy nazywamy stosując pierwszą literę wielką, co z kolei powoduje że nie ma potrzeby nazywania zmiennej ProductClass
wystarczy Product
Zmienne lubią dobrze wyglądać
Do czytania kodu używasz między innymi wzroku, a wzrok może płatać figle. Słynny już przykład z l
małą literą L oraz liczbą jeden 1
. Oraz wielką literą O oraz zerem.
Źle
const lO; //Zmienna składająca się ze znaków L i O
Dodatkowo nie mieszaj przyjętej konwencji nazewnictwa zmiennych:
Źle
const get_FirstLetter; //Pobierz pierwszą literę
Dobrze
const getFirstLetter; //Pobierz pierwszą literę
Wielu doświadczonych programistów złości system nazewnictwa w BEM CSS. Mianowicie chodzi o stosowanie znaków "--" oraz "__", moim zdaniem wynika to z potrzeby pedantycznego utrzymania kodu, wcięć, odstępów, skracania ect. To taki mój anegdotyczny dowód na to że zmienna lubi dobrze wyglądać.
Kontekst nazwy zmiennej musi się różnić
Nazwa zmiennej nie może zostać pomylona z inną podobną nazwą.
Źle
const getImages;
const getImage;
const getPictures;
Dobrze
const getSliderImages;
const getActiveImageOfSlider;
const getThumbnails;
Pierwsze trzy zmienne mogą wskazywać na dokładnie taką samą funkcje, jeżeli stworzyłeś już zmienną i musisz przebudować cały program gdyż potrzebujesz podobnej nazwy, zrób to!
Nazwy muszą być łatwe
Używaj nazw zmiennych które można omawiać na spotkaniach, pamiętaj że Twoja zmienna ma być skondensowanym opisem swojej zawartości. Co opisuje zmienna a110222product
, już Ci tłumaczę jest to produkt utworzony dnia jedenastego lutego. Spróbuj jednak rozmawiać z jakimś programistą o tak napisanym kodzie.
Źle
const a110222product; //Produkt z zaszytą datą w nazwie
Dobrze
const product.createDate; //Produkt z datą podaną jako właściwość
Zmienną będziesz wyszukiwał kilkanaście razy
Dobra nazwa powinna być unikalna i łatwa do wyszukania. Pomyśl że zmienną nazwałeś jedną literą, przykładowo a
pomyśl ile czasu zajmie Ci odszukanie tej zmiennej w kodzie który liczy sobie 1000 linijek
Źle
const pro; //Zmienna przechowująca lokalnie obiekt produktu
Dobrze
const product //Zmienna przechowująca lokalnie obiekt produktu
Wyjątkiem są zmienne których nigdy nie będziesz wyszukiwał, tak jak przykładowo i
w pętli for
.
Nie bój się długości
Nazwa zmiennej powinna być wyczerpana i zrozumiała, nie oszczędzaj na słowach oszczędzaj na lepszej nazwie.
Źle
const galleryThumbnailsShowOrHideButton; //Nazwa za długa, można prościej
Dobrze
const galleryThumbnailsToggleButton; //Długa i fajna
Kod z odpowiednimi nazwami jest dłuższy, ale też i lepszy.
Niepotrzebne przedrostki i przyrostki
Wszystkie niepotrzebne dodatki do zmiennych w stylu "info", "var", "private", "class" ect.
Źle
const varProductInfo; //Nie ma potrzeby informowana że to zmienna, i jaką informacje daje nam słowo info?
Dobrze
const product; //Ta nazwa mówi nam dokładnie tyle samo co powyższa
Skromność
Każdy programista rozumie że jest Bogiem świata, że powinien być to elitarny zawód pozbawiony sezonowych wordpresowców, jednak nie kombinuj. Nie pokazuj na siłę jakim kozakiem jesteś, jeżeli w nazwie pętli przyjęło się i nie zamieniaj tego na index. Raz to już tradycja, dwa co jak będziesz potrzebował pętli w pętli? A no tak zawsze można nazwać jndex.
Klasy
Nazwy klas, powinny być rzeczownikami lub połączeniem rzeczownika i rzeczownika oraz rzeczownika i przymiotnika.
Dobrze
const Tree; //Rzeczownik
const BigTree; //Przymiotnik + rzeczownik
const TreeOak; //Rzeczownik + rzeczownik
Metody
Nazwy metod powinny być czasownikiem połączonym z rzeczownikiem lub z rzeczownikiem i przymiotnikiem. Mutatory i predykaty powinny mieć nazwy na podstawie właściwości którą obsługują i być poprzedzone przedrostkiem get, set lub is.
Dobrze
const getTreeHeight; //Czasownik + rzeczownik + rzeczownik
const setBigTree; //Czasownik + przymiotnik + rzeczownik
const delete; //Czasownik
Trzymaj się nomenklatury
Zawsze opisuj abstrakcje, klasę czy obiekt w którym się znajdujesz tym samym słowem. Przykładowo kiedy tworzysz slider nie nazywaj go raz sliderem a raz rotatorem. Można się łatwo pogubić kiedy w kodzie mamy dwie metody getImages lub getPictures. Czym one się różnią?
Musimy trzymać się razem
Ziomek który czyta Twój kod to też programista, pomóż mu i użyj nazwy związanej z naszą branżą przykładowo buttonFactory i już wiadomo że został użyty wzorzec fabryki, można sprawdzać czy słusznie czy naciąganie.
Podsumowanie
Udało mi się zgromadzić tych klika prostych zasad, najprawdopodobniej będę dodawał nowe, wrzucając mój artykuł na pastwę złośliwych programistów. A Ty jakie masz zasady których się trzymasz podczas nazywania zmiennych?