Einzelnen Beitrag anzeigen

Benutzerbild von Lemmy1
Lemmy1

Registriert seit: 28. Nov 2004
Ort: Ismaning
184 Beiträge
 
Delphi 2006 Professional
 
#40

Re: Bt=Button, Lb=Label, Ed=Edit

  Alt 21. Sep 2006, 19:53
Ich würde gerne mal meine 2ct dazu geben. Vorweg genommen: Jeder hat sein Recht auf meine Meinung und ich respektiere alle, die ungarische Notation (das sind diese lower-case Präfixe vor den Namen) verwenden. Dennoch ist dies nicht der einzige Stil, den man so verwenden kann.

Meiner Meinung nach ist ungarische Notation eher veraltet. Gute Namen drücken den SINN einer Variable aus, nicht deren Typ. So habe ich oft erlebt, dass Entwickler beim Namen ausdenken faul werden, da sie ja bereits einen Typen im Namen drin haben.

Typische Namen aus ungarischer Notation wären ja z.B.: "sFile, fFile, iFileSize" etc. Durch das vorangestellt "s" lässt sich erkennen, dass es sich um einen String handelt. Also müsste "sFile" ja wohl ein Dateiname sein, wohingegegen das "f" auf "File" deutet (oder doch eher Float oder FunctionPointer?).

Bessere Namen für mich wären hier:
  • "Filename" (kein Grund für String-Präfix...ein Filename kann nur ein String sein)
  • "FilePointer/FileObject/FileHandle" (was auch immer genau gemeint ist)
  • FileSize (kein Grund für Integer....eine Filesize kann nur Integer oder Cardinal sein...und sowas brauch ich kaum im Namen).

Gut bisher hab ich nur gesagt, warum man Präfixe nicht braucht, aber ich finde sie sogar teilweise schädlich. In einer modernen objektorientierten Sprache (wie Delphi) gibt es prinzipiell eine beliebige Anzahl an Typen. Ich will ja kaum für jeden dieser Typen einen eigenen Präfix erfinden. Sehr oft läuft man in Wiedersprüche (steht "ctl" nun für TCheckedTreeList oder für TCapitalTLetter...zugegeben konstruiert )..

Ein weiteres Problem ist die Zusammenarbeit zwischen Komponenten. Code muss nicht nur innerhalb einer Firma zusammenarbeiten, sondern auch mit Third-Party-Componenten oder Consumern. Und will man nun seinem Consumer einen Coding-Style auferlegen (Microsoft machte das zwar mit der Win32 API so, hat aber mit .Net ja auch dazu gelegt).

Für mich gibt es Ausnahmen, von der kein Präfix-davorstellen-Regel:
  • Klassenvariablen brauchen ein "F", da sie sonst nicht unterscheidbar von deren Properties sind
  • Klassennamen sollten ein "T" vorangestellt haben, weils einfach Standard ist
  • Ebenso sollten Interfaces ein "I" haben

Wenn ich den Typen wirklich angeben MUSS, dann hinten angestellt. So heissen meine Controls z.B.
"NameLabel", "NameEdit", "OKButton". Das hat nebenbei den Vorteil, dass alle Name-Controls in der Intellisense zusammen erscheinen. Muss sich jemand anders den Code anschauen, so muss er außerdem keine Abkürzungen lernen, sondern versteht sofort, um welches Control es sich handelt.


Viel geschrieben...das sind irgendwie so die Ergebnisse aus langen Diskussionen in meiner Arbeit, wo ich einst selbst ein Hungarian Vertreter war...

Grüße
Daniel
www.nemu.com - The N64 Emulator
  Mit Zitat antworten Zitat