lynxx
Lt. Junior Grade
- Registriert
- Feb. 2005
- Beiträge
- 460
Wer kennt es nicht, jede moderne IDE hat Autovervollständigen. Das hat mir damals als ich '97 mit Java anfing viel Tipparbeit gespart, einfach eine Instanz einer Klasse erzeugen, Instanzname.
Als ich Anfing größere Projekte zu schreiben gewöhnte ich mir an die Instanznamen mit einem Kürzel des Klassennamens zu beginnen.
Doch @pvc-junkie hielt mir vor ein paar Tagen vor das
Doch das Variablen mit einem Teil des Klassennamens beginnen hat viele Vorteile, z.B kann es sein das ich eine C#-Gui mit 4 ListBoxen, 10 CheckBoxen, 12 Labeln, 5 Buttons habe .. und sagen wir mal ich habe jetzt 4 Wochen nicht mehr an dem Projekt gearbeitet und hab mir nur ein TODO: im Kopf der Klasse hinterlassen, ich muss den Code für den AktionsButton "Hinzufügen" schreiben. Also GUI geöffnet, auf den Button geklickt -> Events & Doppelklick auf "Click", die IDE erstellt den Grundcode für den Buttonklick, ich weiss ich brauche den Eintrag der linken unteren ListBox,
Mit "Ungarischer Notation":
also tippe ich
Ohne "Ungarische Notation":
also tippe ich
Es entstehen auch mehr Fehlerquellen: Mit etwas Pech klickt man die Komponenten nicht nur in der GUI an sondern verschiebt sie aus versehen .. oder im schlimmsten Fall man dragt sie aus versehen auf ein anderes Panel, das nach Murphy dann auch nicht die Komponente anzeigt weil die Koordinaten ausserhalb der Panelbounds sind .. dann muss man im Baum suchen wohin die Komponenten verschwunden ist und sie im Baum wieder an die richtige Stelle verschieben.
Mit "Ungarischer Notation" kann ich praktisch durchgehend Programm schreiben und nutze soviel Autovervollständigen das ich mir schon Gedanken über die nächste Zeile mache bevor ich die eine fertig habe.
Ohne "Ungarische Notation" würde ich ständig rausgerissen und das hin und hergeklicke würde bestimmt dreimal solang dauern ..
Auf Wikipedia sind einige der Einwände gegen die ungarische Notation:
* Sie machen es schwerer den Namen oder Typ einer Variablen, Funktion, Felds oder Klasse zu ändern.
Das hätte ich niemals vor und wenn doch ist es doch kein Problem per IDE den Variablennamen über alle Klassen gleichzeitig zu ändern.
* Die Kodierung des Typen einer Funktion in den Namen (die sogenannte ungarische Notation) ist hirnrissig. Der Compiler kennt die Typen ohnehin und kann diese überprüfen und es verwirrt nur den Programmierer.
Klar weiss der Compiler was für Typen die Klassen haben, aber der Entwickler soll sich die Namen aller Instanzen und deren Klassen merken!??!
Ausserdem sind Java & C# Typensicher, also man kann gar nicht aus versehen eine Funktion aufrufen die die Klasse gar nicht hat ..
Also was spricht ernsthaft gegen eine "Ungarische Notation" oder wie ist euere Meinung dazu ?
Edit: Also ich nehme keine "echte" Ungarische Notation, sondern nur ein Kürzel vor dem CamelCase Namen, z.B für eine TextBox: tbRconOutput
TAB
und man bekommt eine Liste aller Funktionen & Variablen, oder man weiß schon grob was man braucht und tippt nach dem Punkt die ersten paar Zeichen und dann TAB
und die IDE vervollständigt den Funktions/Variablennamen, gleiches für statische Variablen/Konstanten/Konstruktoren ..Als ich Anfing größere Projekte zu schreiben gewöhnte ich mir an die Instanznamen mit einem Kürzel des Klassennamens zu beginnen.
Doch @pvc-junkie hielt mir vor ein paar Tagen vor das
Ich sah das als Trollkommentar an, aber ich habe mir trotzdem darüber Gedanken gemacht.pvc-junkie schrieb:Die ungarische Notation von Variablen ist veraltet und sollte laut C# Naming Convention nicht verwendet werden.
Doch das Variablen mit einem Teil des Klassennamens beginnen hat viele Vorteile, z.B kann es sein das ich eine C#-Gui mit 4 ListBoxen, 10 CheckBoxen, 12 Labeln, 5 Buttons habe .. und sagen wir mal ich habe jetzt 4 Wochen nicht mehr an dem Projekt gearbeitet und hab mir nur ein TODO: im Kopf der Klasse hinterlassen, ich muss den Code für den AktionsButton "Hinzufügen" schreiben. Also GUI geöffnet, auf den Button geklickt -> Events & Doppelklick auf "Click", die IDE erstellt den Grundcode für den Buttonklick, ich weiss ich brauche den Eintrag der linken unteren ListBox,
Mit "Ungarischer Notation":
also tippe ich
if (li
TAB
und bekomme eine Liste aller ListBoxen, wähle die entsprechende aus und tippe weiter ... Dann muss ich eine CheckBox prüfen, also tippe ich if (cb
TAB
und bekomme eine Liste aller Checkboxen, wähle die richtige aus und tippe weiter ... dann muss ich das Panel auf dem die AktionsButtons sind disablen damit der User nicht nochmal darauf klickt während gerade eine Aktion ausgeführt wird, also tippe ich p
TAB
wähle das Panel aus .dis
TAB
able(); .. dann brauche ich einen Text aus einer TextArea der in ein Label muss, lb
TAB
Label auswählen, .setT
TAB
(taTAB
TextArea auswählen usw usf ..Ohne "Ungarische Notation":
also tippe ich
if (
, wechsel in den GUI-Mode, ListBox anklicken und den Namensanfang merken oder Name aus den Properties "kopieren", zurück in den Quelltext, Namensanfang und TAB
oder "einfügen", weitertippen, bei allen weiteren Komponenten das gleiche Spiel, wechsel zur GUI, Komponente anklicken und Namen merken oder kopieren, zurück zum Quelltext und dort Namensanfang und TAB
oder "einfügen", es kann allerdings auch sein das eine Komponente auf einem hinteren Panel eines TabControls ist, dann muss man da auch noch das Panel umschalten (und nicht vergessen wieder zurückzuwechseln falls das Panel z.B erst aktiv ist wenn auf dem ersten schon Daten eingeben wurden), oder eine Komponente wird erst zur Laufzeit erzeugt/dynamisches Layout, dann muss man sich u.u durch den Komponenten-Baum hangeln oder bei den Globalen Variablen suchen ...Es entstehen auch mehr Fehlerquellen: Mit etwas Pech klickt man die Komponenten nicht nur in der GUI an sondern verschiebt sie aus versehen .. oder im schlimmsten Fall man dragt sie aus versehen auf ein anderes Panel, das nach Murphy dann auch nicht die Komponente anzeigt weil die Koordinaten ausserhalb der Panelbounds sind .. dann muss man im Baum suchen wohin die Komponenten verschwunden ist und sie im Baum wieder an die richtige Stelle verschieben.
Mit "Ungarischer Notation" kann ich praktisch durchgehend Programm schreiben und nutze soviel Autovervollständigen das ich mir schon Gedanken über die nächste Zeile mache bevor ich die eine fertig habe.
Ohne "Ungarische Notation" würde ich ständig rausgerissen und das hin und hergeklicke würde bestimmt dreimal solang dauern ..
Auf Wikipedia sind einige der Einwände gegen die ungarische Notation:
* Sie machen es schwerer den Namen oder Typ einer Variablen, Funktion, Felds oder Klasse zu ändern.
Das hätte ich niemals vor und wenn doch ist es doch kein Problem per IDE den Variablennamen über alle Klassen gleichzeitig zu ändern.
* Die Kodierung des Typen einer Funktion in den Namen (die sogenannte ungarische Notation) ist hirnrissig. Der Compiler kennt die Typen ohnehin und kann diese überprüfen und es verwirrt nur den Programmierer.
Klar weiss der Compiler was für Typen die Klassen haben, aber der Entwickler soll sich die Namen aller Instanzen und deren Klassen merken!??!
Ausserdem sind Java & C# Typensicher, also man kann gar nicht aus versehen eine Funktion aufrufen die die Klasse gar nicht hat ..
Also was spricht ernsthaft gegen eine "Ungarische Notation" oder wie ist euere Meinung dazu ?
Edit: Also ich nehme keine "echte" Ungarische Notation, sondern nur ein Kürzel vor dem CamelCase Namen, z.B für eine TextBox: tbRconOutput
Zuletzt bearbeitet: