Známe tyto základní typy označování identifikátorů
Pascal
První písmeno identifikátoru je velké. Pokud se identifikátor skládá z více slov, každé slovo v tomto zřetězeném názvu začíná velkým písmenem. Pascal zápis je vhodný pro identifikátory, které mají tři a více písmen. Příklad:
NazevIdentifikatoru
Camel
První písmeno identifikátoru je malé. Pokud se identifikátor skládá z více slov, každé další slovo v tomto zřetězeném názvu začíná velkým písmenem. Příklad:
nazevIdentifikatoru
Velká písmena
Všechna písmena v identifikátoru jsou velká. Pokud se skládají z více slov, jsou oddělena podtržítkem ('_'). Příklad:
NAZEV_IDENTIFIKATORU
Programovací jazyky Java a C# mají od svých výrobců doporučení, jak psát jednotlivé identifikátory. Je zajímavé, že přestože jsou si oba jazyky velmi podobné, tak tato doporučení se liší.
| Java | ||
|---|---|---|
| Identifikátor | Popis | Příklad |
| Balíky | Všechna jména malými písmeny odděleno tečkou | package cz.domena.ukladani |
| Třídy | Pascal | class OtevriSoubor; class Soubor |
| Rozhraní | Pascal | interface UkladaniJmena; interface Ukladani |
| Metody | Camel | vypocti(); vypoctiObsah(); |
| Proměnné | Camel | int obsah; char k; float obsahKruhu; |
| Konstanty | Velká písmena | static final int MAX_DELKA; |
| C# | ||
|---|---|---|
| Identifikátor | Popis | Příklad |
| Jmenný prostor | Pascal | Microsoft.Media; Microsoft.MediaDesign; |
| Třídy | Pascal | OtevriSoubor; Soubor; |
| Rozhraní | Pascal + předpona I |
IUkladaniJmena; IUkladani; |
| Metody | Pascal | Vypocti(); VypoctiObsah(); |
| Atributy | Pascal + přípona Attribute |
ObsoleteAttribute{}; |
| Parametry | Camel | format; prvniFormat; |
| Vlastnosti | Pascal | BarvaPozadi; Cervena; |
| Události | Pascal | MouseEventHandler |
| Výjimky | Pascal + přípona Exception |
WebException |
| Enum typ i hodnota | Pascal | UrovenChyby |
| Statické proměnné pouze pro čtení | Pascal | CervenaBarva |
| protected a private proměnné | Camel + předpona _ |
_cervenaBarva; _cervena |
I když oba jazyky podporují diakritické znaky v názvech identifikátorů, mě osobně se to moc nelíbí. Je nutné vzít v úvahu, že náš kód může číst někdo, kdo česky neumí a české znaky se na jeho obrazovce nemusí vůbec zobrazit. Sice zde máme utf-8, ale přesto já osobně doporučuji diakritické znaky v názvech identifikátorů nepoužívat. Je to samozřejmě ale věc názoru.
Asi nejlepší volbou je dodržovat doporučení k jednotlivým platformám. Ne proto, že by byly tak geniální, ale proto, že je potom nový kód kompatibilní s knihovnami, které jsou dodány výrobcem. Je pro všechny zúčastněné strany lepší se orientovat v kódu, který je psán stejným způsobem jako knihovny příslušného prostředí.
Pokud si položím otázku, které doporučení se mi jeví jako lepší, mám v odpovědi celkem jasno. Lepší je doporučení pro Javu. Celkem sice chápu důvody proč Microsoft míchá v názvech identifikátorů jejich účel a typ, ale je to nesystémové a může to být i matoucí. Zdůvodňuji si to tím, že součástí .NET jsou i jazyky, které nejsou schopny v kódu rozeznávat velikost písmen. Přesto myslím, že doporučení používat předpony a přípony u identifikátorů, tzv. maďarskou notaci, je dnes přežitek. Microsoft to doporučoval u předchozích technologií a zbytky tohoto doporučení se zřejmě "prosákly" do .NET frameworku. Zkostnatělí programátoři zřejmě existují i ve vývojových týmech Microsoftu.

4 komentářů:
Myslím že závěr je až příliš spekulativní. Já se například těmito doporučeními řídím jen mimoděk, protože mi kód připadá pěkný opticky ;-) A to jsem nikdy takové doporučení nečetl, prostě jsem viděl tento zápis všude okolo. Různé styly v různých jazycích mi pomáhají rozlišit se od sebe lépe v mé hlavě. A co se týká přípon a předpon, v doporučených případech se jedná o méně časté entity, kde jejich dodržování není opruz, a přitom silně pomáhá uvědomit si význam. Tvé rozhorčení zřejmě pramení z přívějšího zápisu datových typů - strName atd. - to je fakt humus.
balicky se snad vetsinou v jave pisou opacne tzn. cz.neo....
Děkuji za upozornění, to jsem přehlédl. Už jsem to opravil.
"zkostnateli" programatori... to se mi libi :))) kdyz clovek zacinal v C, tak psal row_count v C++ pak presel na iRowCount (resp. nRowCount) a v C# aby zacal psat rowCount. stejne tak v pripade member variables - m_nRowCount se vzilo docela dukladne a nyni je potreba dusledne pouzivat this.rowCount, aby bylo zrejme odkud se promenna bere. konstanty odjakziva psane MAX_ROW_COUNT taky dostaly na frak a je potreba psat MaxRowCount resp. RowCountMax.
dejou se veci. ze mizi prefixy mi ani tak nevadi, ale postfixy bych uplne nezavrhoval.
Přidat komentář