Pravidla pro pojmenování proměnných

Marek

Pravidla pro pojmenování proměnných
« kdy: 03. 11. 2016, 09:24:31 »
Ahoj;
chtel bych se zeptat jak to mate s pojmenovavanim promennych + jaky je standart jak to delat, co jsem se dival na netu tak je v tom trochu bordel... 8) Napr. koukam na zdrojaky v C#, nekde maji soukrome slozky s podtrzitkem (int _a;) - ve skole na C++ nam zase rikali ze podtrzitko jedine za promennou protoze ty pred mohou kolidovat s typy vyhrazenymi pro prekladac kde je to tak implementovano. Jinde maji soukrome malymi pismeny a verejne slozky velkymi. Metody jestli to dobre chapu maji zacinat slovesem a malym pismenem na zacatku ve velbloudi notaci(getCount()), datova polozka ma byt podstatne/pridavne jmeno a typ bool zacinat Is/Can/Has? Mam v tom trochu chaos, kdyztak me opravte nebo vysvetlete... Diky MOC :) 
« Poslední změna: 03. 11. 2016, 10:27:03 od Petr Krčmář »


Ivan Nový

Re:Pojmenovani promennych atd
« Odpověď #1 kdy: 03. 11. 2016, 09:39:06 »
Ahoj;
chtel bych se zeptat jak to mate s pojmenovavanim promennych + jaky je standart jak to delat, co jsem se dival na netu tak je v tom trochu bordel... 8) Napr. koukam na zdrojaky v C#, nekde maji soukrome slozky s podtrzitkem (int _a;) - ve skole na C++ nam zase rikali ze podtrzitko jedine za promennou protoze ty pred mohou kolidovat s typy vyhrazenymi pro prekladac kde je to tak implementovano. Jinde maji soukrome malymi pismeny a verejne slozky velkymi. Metody jestli to dobre chapu maji zacinat slovesem a malym pismenem na zacatku ve velbloudi notaci(getCount()), datova polozka ma byt podstatne/pridavne jmeno a typ bool zacinat Is/Can/Has? Mam v tom trochu chaos, kdyztak me opravte nebo vysvetlete... Diky MOC :)

Každý jazyk, ba co každý projekt má pravidla vlastní. Je třeba dodržovat ta pravidla, která platí v daném případě, žádná univerzální neexistují.

Kit

Re:Pojmenovani promennych atd
« Odpověď #2 kdy: 03. 11. 2016, 10:23:21 »
Ahoj;
chtel bych se zeptat jak to mate s pojmenovavanim promennych + jaky je standart jak to delat, co jsem se dival na netu tak je v tom trochu bordel... 8) Napr. koukam na zdrojaky v C#, nekde maji soukrome slozky s podtrzitkem (int _a;) - ve skole na C++ nam zase rikali ze podtrzitko jedine za promennou protoze ty pred mohou kolidovat s typy vyhrazenymi pro prekladac kde je to tak implementovano. Jinde maji soukrome malymi pismeny a verejne slozky velkymi. Metody jestli to dobre chapu maji zacinat slovesem a malym pismenem na zacatku ve velbloudi notaci(getCount()), datova polozka ma byt podstatne/pridavne jmeno a typ bool zacinat Is/Can/Has? Mam v tom trochu chaos, kdyztak me opravte nebo vysvetlete... Diky MOC :)

Řešíš jeden z nejtěžších problémů programátorů - pojmenování věcí. Byla o tom napsána již spousta článků, každý trochu jinak a pro každý jazyk ještě jinak.

Privátní komponenty nijak neoznačuji, neboť je mívám všechny privátní. Velbloudí notace je dobrá, i když ji moc nepoužívám (identifikátory mám nejčastěji jednoslovní). Názvy metod mají začínat slovesem. Typu bool se vyhýbám, proto Is/Can/Has neřeším, ale v podstatě to také souhlasí.

Název interface by měl být přídavné jméno (je to popis vlastností).

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Pojmenovani promennych atd
« Odpověď #3 kdy: 03. 11. 2016, 10:30:14 »
Casto existuji nejake uznavane best practices pro dany jazyk (napr. TypeScript) nebo i jen framework (napr. Angular 2). Ale vzhledem k tomu, ze to tema je znacne subjektivni, tak jak pise pan Ivan, nezridka existuji i konvence pro danou firmu, projekt ci modul.

Kupr. me se osobne celkem libi prefixovat interfacy pomoci I, ale je to povazovane (alespon v Java svete) za bad practise, tak jsem si zvykl to nedelat. Podobne "_" v JavaScriptu pro "privatni" promenne se nedoporucuje pouzivat, udajne proto, protoze JS zadne modif. pristupu nema. Pro konstanty byva tuhy souboj mezi SOME_CONSTANT a SomeConstant a someConstant. Diky podtrzitkum se nazvy se pry (podle vedecke studie) rychleji ctou. Osobne se mi libi konvence ve Scale - SomeConstant (someField, someVal, SomeClass).

Pako

Re:Pravidla pro pojmenování proměnných
« Odpověď #4 kdy: 03. 11. 2016, 10:34:33 »
 Čistě pro inspiraci,  netvrdím že to je "správně" nebo "nejlíp" ale je to výsledek přemýšlení chytrých lidi: https://swift.org/documentation/api-design-guidelines/


Trupik

Re:Pravidla pro pojmenování proměnných
« Odpověď #5 kdy: 03. 11. 2016, 11:00:17 »
A čo jazyk, v ktorom premenné a metódy nazývať? Nech robíme čokoľvek, skôr či neskôr skončíme u nás vo firme s tým, že niečo je po slovensky, a niečo po anglicky.  :( Keď začneme so slovenčinou, čoskoro sa ukáže, že angličtina má niektoré zaužívané slová, ktoré je ťažké nahradiť. A keď začneme s angličtinou, čoskoro narazíme na tak špecifické termíny biznis logiky, ktoré nemá zmysel prekladať, resp. ich prekladom sa kód stane menej prehľadným.

Kit

Re:Pravidla pro pojmenování proměnných
« Odpověď #6 kdy: 03. 11. 2016, 12:04:36 »
A čo jazyk, v ktorom premenné a metódy nazývať? Nech robíme čokoľvek, skôr či neskôr skončíme u nás vo firme s tým, že niečo je po slovensky, a niečo po anglicky.  :( Keď začneme so slovenčinou, čoskoro sa ukáže, že angličtina má niektoré zaužívané slová, ktoré je ťažké nahradiť. A keď začneme s angličtinou, čoskoro narazíme na tak špecifické termíny biznis logiky, ktoré nemá zmysel prekladať, resp. ich prekladom sa kód stane menej prehľadným.

Z dotazu je patrné, že Marek preferuje angličtinu.

Obecně platí, že by se v jednom identifikátoru neměly míchat jazyky. Název metody getPocet() je tedy podle tohoto pravidla chybně.

Většinou to dělám tak, že komponenty v rozhraní (metody) mívám anglicky. Těch sloves není mnoho a jsou vcelku zažité. (add, insert, delete, update,...) Třídy a objekty mám česky.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Pravidla pro pojmenování proměnných
« Odpověď #7 kdy: 03. 11. 2016, 12:05:52 »
U nas se strikne vyzaduje vse anglicky - identifikatory, komentare, dokumentace. Ale je pravda, ze nedelame pro ceskeho/slovenskeho zakaznika. I tak si myslim, ze anglictina je dobra volba. Neni nic horsiho, nez udrzovat kod s komentari treba v rustine :D. Precejenom snad kazdy vyvojar umi anglicky.

Ivan Nový

Re:Pravidla pro pojmenování proměnných
« Odpověď #8 kdy: 03. 11. 2016, 12:25:49 »
A čo jazyk, v ktorom premenné a metódy nazývať? Nech robíme čokoľvek, skôr či neskôr skončíme u nás vo firme s tým, že niečo je po slovensky, a niečo po anglicky.  :( Keď začneme so slovenčinou, čoskoro sa ukáže, že angličtina má niektoré zaužívané slová, ktoré je ťažké nahradiť. A keď začneme s angličtinou, čoskoro narazíme na tak špecifické termíny biznis logiky, ktoré nemá zmysel prekladať, resp. ich prekladom sa kód stane menej prehľadným.

Z dotazu je patrné, že Marek preferuje angličtinu.

Obecně platí, že by se v jednom identifikátoru neměly míchat jazyky. Název metody getPocet() je tedy podle tohoto pravidla chybně.

Většinou to dělám tak, že komponenty v rozhraní (metody) mívám anglicky. Těch sloves není mnoho a jsou vcelku zažité. (add, insert, delete, update,...) Třídy a objekty mám česky.

Překladem do angličtiny se ten název otestuje, přece jen je lepší pojmenovat třídu Worker, než Dělník, či Zpracovatel.

Kit

Re:Pravidla pro pojmenování proměnných
« Odpověď #9 kdy: 03. 11. 2016, 12:31:15 »
Překladem do angličtiny se ten název otestuje, přece jen je lepší pojmenovat třídu Worker, než Dělník, či Zpracovatel.

Co prosím? Jak se ten název otestuje pouhým překladem do angličtiny? Proč je lepší název Worker než Dělník či Zpracovatel?

dustin

Re:Pravidla pro pojmenování proměnných
« Odpověď #10 kdy: 03. 11. 2016, 12:38:28 »
Názvy jsou dle mého názoru jedním z klíčových prvků, které přispějí nebo naopak zhorší čitelnost a s tím související chybovost kódu. Rovněž je třeba, aby vývojář uměl dostatečně dobře anglicky a názvy dávaly v angličtině správný smysl, nebyl to nějaký czenglismus. S tím se setkávám neustále. Chybné trpné rody nepravidelných sloves jsou jenom vrcholem ledovce, horší jsou nesprávné překlady, které vyloženě matou.

Slušně napsaný kód se čte jako anglický příběh.

K délce - raději mám delší přesný název vyjadřující skutečný význam, než rádoby pochopitelnou zkratku, které nikdo jiný kromě autora nerozumí. IDE doplňuje, takže delší názvy nijak nevadí. Jednoslovné pojmenování bývá dostatečně popisné jen výjimečně, možná tak v maličkém projektíku vyvíjeného pouze jedním člověkem. A i tam pochybuju.


noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Pravidla pro pojmenování proměnných
« Odpověď #11 kdy: 03. 11. 2016, 12:39:15 »
BTW nektere jazyky umoznuji i UTF8 identifikatory, fuj.

Překladem do angličtiny se ten název otestuje, přece jen je lepší pojmenovat třídu Worker, než Dělník, či Zpracovatel.

Co prosím? Jak se ten název otestuje pouhým překladem do angličtiny? Proč je lepší název Worker než Dělník či Zpracovatel?

Protoze mu bude rozumnet v podstate kazdy vyvojar na svete? Ja nerustinar proste v nazvu tridy Разнорабочий nevidim toho ceskeho Dělníka. Jako jo, pokud si neco matlate v jednom cloveku a ani se to neplanuje udrzovat, tak pak jo. Ale vzhledem k tomu, jak casto se meni zadani a pozadavky zakaznika, tak ani tomu bych neveril. Mozna kdybych to mel vyslovne ve smlouve, ale i tak nevidim zadne klady v pouzivani ceskych/českých identifikatoru. Pokud neni zcela jasne, jaky je preklad, tak se ma tym domluvit na slovnicku a toho se striktne drzet.

Kit

Re:Pravidla pro pojmenování proměnných
« Odpověď #12 kdy: 03. 11. 2016, 12:44:13 »
K délce - raději mám delší přesný název vyjadřující skutečný význam, než rádoby pochopitelnou zkratku, které nikdo jiný kromě autora nerozumí. IDE doplňuje, takže delší názvy nijak nevadí. Jednoslovné pojmenování bývá dostatečně popisné jen výjimečně, možná tak v maličkém projektíku vyvíjeného pouze jedním člověkem. A i tam pochybuju.

Platí přece jasné pravidlo: Zkratky nepoužívat.

Ivan Nový

Re:Pravidla pro pojmenování proměnných
« Odpověď #13 kdy: 03. 11. 2016, 12:46:06 »
BTW nektere jazyky umoznuji i UTF8 identifikatory, fuj.

Překladem do angličtiny se ten název otestuje, přece jen je lepší pojmenovat třídu Worker, než Dělník, či Zpracovatel.

Co prosím? Jak se ten název otestuje pouhým překladem do angličtiny? Proč je lepší název Worker než Dělník či Zpracovatel?
Code 7, Victim 5

Protoze mu bude rozumnet v podstate kazdy vyvojar na svete? Ja nerustinar proste v nazvu tridy Разнорабочий nevidim toho ceskeho Dělníka. Jako jo, pokud si neco matlate v jednom cloveku a ani se to neplanuje udrzovat, tak pak jo. Ale vzhledem k tomu, jak casto se meni zadani a pozadavky zakaznika, tak ani tomu bych neveril. Mozna kdybych to mel vyslovne ve smlouve, ale i tak nevidim zadne klady v pouzivani ceskych/českých identifikatoru. Pokud neni zcela jasne, jaky je preklad, tak se ma tym domluvit na slovnicku a toho se striktne drzet.
Já jsem taky pro striktně anglické názvy. No a právě při tvorbě toho slovníčku, se na základě různých názorů na překlad dodatečně otestuje sémantika zamýšleného objektu.

Kit

Re:Pravidla pro pojmenování proměnných
« Odpověď #14 kdy: 03. 11. 2016, 13:02:09 »
Já jsem taky pro striktně anglické názvy. No a právě při tvorbě toho slovníčku, se na základě různých názorů na překlad dodatečně otestuje sémantika zamýšleného objektu.

Nechce se mi několikrát denně kvůli každému novému názvu třídy hledat ve slovníku a ověřovat, zda je to sémanticky stejné jako v češtině.