Präfixe, unsignierte Variablen, ungarische Notation - Umsteiger braucht Hilfe
-
Wenn du genug Testprojekte vor dir hast, kannst du ja einfach mal ein paar Variationen ausprobieren.
Das hoffe ich doch
Danke.
-
Dazu gibt es bestimmt schon pihundert Threads, die du mit der Suchfunktion finden kannst
Mhh, ich habe irgendwie nur einen Thread gefunden, und das ist meiner...
-
zB FAQ
Es geht zwar primaer um CKlasse VS Klasse, aber es sollte trotzdem interessant sein
-
MaSTaH schrieb:
Die ungarische Notation ist völlig veraltet und stammt aus alten C-Zeiten. Als C++ler sollte man sparsam mit Prefixen umgehen...
LOL. Die ungarische Notation wurde wie oben erwähnt tatsächlich für die Windows Programmierung sogar ganz speziell von einem Programmierer bei MicroSoft entwickelt. Ist inzwischen ein Standard bei vielen Projeketen (vor allem bei Java und OOP-C++) und gehört zur Software Entwicklung nach Software Life Cycle Modellen einfach dazu. Die wichtigsten Punkte sollte man zur Übersicht des Codes beibehalten: Klassennamen groß (z.B. CVector, CSingleton...) und Variablennamen nur am Anfang klein schreiben mit imperativen Ausdruck als erstes Teilwort (getValue(), setvalue(), addElement(), printField()...). Die Präfixe als Teil der ungarischen Notation sind hilfreich, um den Sinn von Bezeichnern schnell zu erkennen, wenn der Code ausgetauscht wird oder nur die Schnittstelle der Headerdatei bekannt ist. Präfixe werden aber wirklich nur bei sehr großen Projekten notwendig (statt par_ lieber this-> nehmen und auf globale Variablen ohnehin verzichten).
-
NeoTrent schrieb:
MaSTaH schrieb:
Die ungarische Notation ist völlig veraltet und stammt aus alten C-Zeiten. Als C++ler sollte man sparsam mit Prefixen umgehen...
LOL. Die ungarische Notation wurde wie oben erwähnt tatsächlich für die Windows Programmierung sogar ganz speziell von einem Programmierer bei MicroSoft entwickelt.
Ja, in alten (C-)Zeiten und trotzdem müssen sich unschuldige Programmierer noch immer von IdioHHHHLeuten quälen lassen die der Ansicht sind nur mit UN-Präfixen lasse sich brauchbarer Code (TM) schreiben.
-
NeoTrent schrieb:
LOL. Die ungarische Notation wurde wie oben erwähnt tatsächlich für die Windows Programmierung sogar ganz speziell von einem Programmierer bei MicroSoft entwickelt. Ist inzwischen ein Standard bei vielen Projeketen (vor allem bei Java und OOP-C++) und gehört zur Software Entwicklung nach Software Life Cycle Modellen einfach dazu.
mal ganz blöd gefragt:
warum verwendet die STL keine ungarische Notation?
warum verwendet boos keine ungarische Notation?
warum verwendet dotNET keine ungarische Notation?
warum verwendet Java keine ungarische Notation?warum verwenden nur Libraries die allgemein als 'schlecht designt' bzw. als 'zu alt um modern zu sein' betitelt werden ungarische Notation? (zB MFC, VCL,...)
warum verwenden Sutter, Meyers, Alexandrescu, [nachtrag]volkard[/nachtrag], ... keine ungarische Notation?
Und jetzt erklär mir noch, warum ungarische Notation einfach zur Softwareentwicklung gehört.
-
reicht es denn nicht, wenn ich sage, daß sie nix taugt?
-
reicht es denn nicht, wenn ich sage, daß sie nix taugt?
Mir schon
-
volkard schrieb:
reicht es denn nicht, wenn ich sage, daß sie nix taugt?
Ja, reicht mir, bei dir.
-
Shade Of Mine schrieb:
warum verwendet die STL keine ungarische Notation?
warum verwendet boos keine ungarische Notation?
warum verwendet dotNET keine ungarische Notation?
warum verwendet Java keine ungarische Notation?warum verwenden nur Libraries die allgemein als 'schlecht designt' bzw. als 'zu alt um modern zu sein' betitelt werden ungarische Notation? (zB MFC, VCL,...)
warum verwenden Sutter, Meyers, Alexandrescu, [nachtrag]volkard[/nachtrag], ... keine ungarische Notation?
Und jetzt erklär mir noch, warum ungarische Notation einfach zur Softwareentwicklung gehört.
Da sprichst du jetzt ein paar wochtige Dinge an. Die ungarische Notation, die für MFC und Co entwickelt wurde wird von vielen Programmierspracherweiterungen und -bibliotheken tatsächlich gar nicht verwendet, was ja auch allgemein hin bemengelt wird (PS: Java ist ein klassischer Vertreter ungarischen Notation, aber denk mal drüber nach warum man in Java ehe kaum Präfixe braucht ;)). Die ungarische Notation ist vor allem deshalb im Software Engineering sehr wichtig, da sehr oft sehr viele Menschen an einem Projeklt arbeiten und selbst nach Abschluss des Projekt stets erweitert werden muss oder kann (Software Life Cycle). Der Code wird ständig verändert, weshalb viele Entwickler damit in Berührung kommen und für Module meist nur Schnittsetllen kennen (Information Hiding). Damit sie mit den Klassen was anfangen können, ohne sich die Implementation um die Ohren zu schlagen, müssen bsw. Methoden eindeutig und klar benannt werden. Die ungarische Notation bringt meiner Meinung nach aber nur was bei sehr großen Projekten und stringend kann man vor allen in der OOP sowie nicht verfolgen (wie lange darf ein Variablenname sein?
). Es ist ja nur ein Vorschlag und keine ANSI-Norm. Am besten das Projekt einigt sich selbst auf eine vernüpftige Codekonvention.
-
NeoTrent schrieb:
Da sprichst du jetzt ein paar wochtige Dinge an. Die ungarische Notation, die für MFC und Co entwickelt wurde wird von vielen Programmierspracherweiterungen und -bibliotheken tatsächlich gar nicht verwendet, was ja auch allgemein hin bemengelt wird
Von wem?
(PS: Java ist ein klassischer Vertreter ungarischen Notation, aber denk mal drüber nach warum man in Java ehe kaum Präfixe braucht ;)).
Entweder man verwendet die ungarische Notation, oder nicht. Klaer mich da mal bitte auf.
Die ungarische Notation ist vor allem deshalb im Software Engineering sehr wichtig, da sehr oft sehr viele Menschen an einem Projeklt arbeiten und selbst nach Abschluss des Projekt stets erweitert werden muss oder kann (Software Life Cycle). Der Code wird ständig verändert, weshalb viele Entwickler damit in Berührung kommen und für Module meist nur Schnittsetllen kennen (Information Hiding). Damit sie mit den Klassen was anfangen können, ohne sich die Implementation um die Ohren zu schlagen, müssen bsw. Methoden eindeutig und klar benannt werden.
Soweit stimme ich dir vollkommen zu.
Hat aber nix mit ungarischer Notation zu tun.Die ungarische Notation bringt meiner Meinung nach aber nur was bei sehr großen Projekten und stringend kann man vor allen in der OOP sowie nicht verfolgen (wie lange darf ein Variablenname sein?
).
Siehst du: ungarische Notation hat in der OOP nichts verloren.
Genau das behaupte ich (und volkard, Hume,...) auch.Es ist ja nur ein Vorschlag und keine ANSI-Norm. Am besten das Projekt einigt sich selbst auf eine vernüpftige Codekonvention.
Ja, genau meine Meinung.
Nur was hat das mit ungarischer Notation zu tun?Also, erklaer mir mal, warum man ungarische Notation braucht.
-
NeoTrent schrieb:
Die ungarische Notation ist vor allem deshalb im Software Engineering sehr wichtig, da sehr oft sehr viele Menschen an einem Projeklt arbeiten und selbst nach Abschluss des Projekt stets erweitert werden muss oder kann (Software Life Cycle).
Mann, du schmeißt mit Ausdrücken um dich und scheinst nicht zu wissen was sie bedeuten. http://de.wikipedia.org/wiki/Softwaretechnik
NeoTrent schrieb:
Der Code wird ständig verändert, weshalb viele Entwickler damit in Berührung kommen und für Module meist nur Schnittsetllen kennen (Information Hiding). Damit sie mit den Klassen was anfangen können, ohne sich die Implementation um die Ohren zu schlagen, müssen bsw. Methoden eindeutig und klar benannt werden.
Was hat Information-Hiding mit der UN zu tun? Und was hat die Benennung von Methoden mit der UN zu tun?
-
Kann ich Euch in Eurer netten Flame-Runde mal kurz unterbrechen?
Kann mir jemand mal ein paar Source-Codes geben, in denen kurz und prägnant eine "vernünftige" Variablen\Klassen\Methoden-Benennung erkennbar ist (Bitte überschaubar)?
Danke.
-
Hehe... Genau wie der alte Thread, der hier irgendwo verlinkt wurde
Ich lese hier schon wieder ganz dezent raus:
"UN ist ja auch nur für _große_ Projekte"
"sinnvolle Variablenbenennung ist nötig, also ist UN gut"Es geht den meisten hier aber IMHO nicht darum, dass UN zu wenig Nutzen bringt, um die Extra-Tipparbeit zu rechtfertigen - sondern darum, dass sie sogar *schadet* und damit in jeder Hinsicht unsinnig ist.
-
Nonsense schrieb:
Kann ich Euch in Eurer netten Flame-Runde mal kurz unterbrechen?
Kann mir jemand mal ein paar Source-Codes geben, in denen kurz und prägnant eine "vernünftige" Variablen\Klassen\Methoden-Benennung erkennbar ist (Bitte überschaubar)?
Danke.class Switcher { public: Switcher() : state(false) { } void toggle() { state = !state; } bool isSet() const { return state; } private: bool state; };
EDIT: Kleine Änderung
-
*heul* Gerade zu die Büchse der Pandora.
Womit habe ich das nur verdient *schnief* ?
Ich möchte doch nur ein paar kleine Beispiele für gute Schreibweise haben. Bitte, bitte...
Danach könnt ihr ja weiter flamen und plonken. :pEdit:
@MaSTaH: Danke. Und wie sieht's mit Variablen aus?
-
EDIT: Kleine Änderung oben. state wurde zu isSet und der Variablenname heißt state
-
MaSTaH schrieb:
state_ ist eine Variable. Man könnte sich jetzt noch streiten ob man state ein sinnvoller Funktionsname in dem Zusammenhang ist.
Aber ich denke nicht, dass alle Variablen mit einem "_" enden sollten, oder? Und wie sieht es mit Variablen aus, die aus mehreren Wörtern bestehen?
Achso: wie machen das eigentlich die Linuxer unter Euch?
-
-
Hab ich nur gemacht weil ich ne Funktion state hatte. Hab die dann aber sinnvollerweise in isSet umbenannt. Den Unterstrich oder ein m_ als Prefix machen viele auch um zu zeigen, dass es sich um ein class-member handelt. Habs aber editiert.