Jak na tvorbu názvů proměnných? rubrika: Folklór

12 Kit
položil/-a 29.8.2015

Jistě to znáte: Potřebujete vytvořit proměnnou (s globání či lokální platností) a potřebujete ji také pojmenovat. V dobách prvních bejziků jsme si museli vystačit s jedním či dvěma písmeny a hotovo. Dnes nám programovací jazyky nabízí tvorbu názvů až 255 znaků, některé možná i víc. Dokonce i s diakritikou.

Pomiňme teď použití camelCase, snake_case, PascalCase či UPPER_CASE - volba je víceméně dána konvencemi v daném jazyce. Stejně tak i použití diakritiky - jazyky to sice zpravidla umožňují, ale bývá s tím víc potíží než benefitů. Také o volbě českého/anglického jazyka v názvech toho už bylo napsáno dost. Jak však ta slova, ze kterých tvoříte názvy proměnných, tříd, objektů, rozhraní, kolekcí, databází, tabulek, sloupců, ... vybíráte? Jak moc se (ne)necháváte ovlivnit kontextem?

odkaz
9 Honza Břešťan
odpověděl/-a 30.8.2015
 
upravil/-a 30.8.2015

Snazim se nazvem promenne vystihnout roli, kterou ma odkazovana instance nebo hodnota. Slovni druh(y) jsou ruzne, protoze spousta mych objektu jsou jen prevlecene funkce, kombinatory, dekoratory...

Kontext promenne je dulezity, protoze jedine z nej muzu zjistit, jakou roli ta promenna hraje (a jestli to vubec vim, protoze pokud mam hodne obecny kod, promenne v nem budou reprezentovat hodne obecne role). Kdyz mam tridu Person, muzou jeji instance byt cokoliv od p, employee, registrant, customer nebo lastLoggedInUser, pritom ani jeden z tech nazvu nemusi byt v danem kontextu spatne.

Delka (a "popisnost") nazvu promenne je vazana na scope te promenne. Cim delsi scope, tim dulezitejsi je, aby bylo jasne videt, co ta promenna reprezentuje. Pokud mam field v objektu, ktery zije po celou dobu aplikace a pristupuje se k nemu z nekolika metod, musi byt hned jasne, co ten field znamena. To same, kdyz vznikne (uprostred refactoringu, nebo v legacy kodu) dlouha metoda. Pokud zacina var x = Getx() a to x se pak pouziva jeste o 200 radku pozdeji, citelnosti to vazne neprispiva (i kdyz to neni hlavni problem te metody, casto to ale jde ruku v ruce). Naopak pokud je to lokalni promenna pro jednoradkovou lambdu, tak i ten jeden znak muze byt moc a radsi mam jazyky s moznost ho uplne vynechat (treba pomoci point-free partial application, nebo nejakou zkracenou lambda syntaxi ve stylu Clojure).

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.