Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

07.08.2003, 16:06

ungarische Namenskonvention

Sag mir mal bitte jemand...
wie kann man von der ungarischen Namenskonvention abkommen? Und dann auch noch, wenn man bisher damit gearbeitet hat, sie also gewöhnt ist???
Also mir wird schlecht, wenn ich CODE sehe, wo Variablen-Typen nicht erkennbar sind.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

07.08.2003, 19:38

Es geht schneller beim Tippen! Normalerweise kann man ja auch am Namen erkennen, was für ein Typ es ist. Zumindest ob es eine Zahl oder ein String oder ein anderes Objekt ist. Bei Zeigern - finde ich - sollte man immer ein Präfix dazunehmen.

Anonymous

unregistriert

3

07.08.2003, 23:01

schreibfaul?

das kann nicht Dein Ernst sein.
Wozu ist dann C++ da? Dann kannst Du doch auch in VB programmieren.
Aber selbst dort tendiert man doch hoffentlich zu einer "einheitlichen" Schreibweise.
Die ungarische Namenskonvention finde ich so genial, dass sie nicht abgeschafft werden darf ;-)
...auch wenn derjenige, der das erfunden hat, zu MS gegangen ist (was ja auch nicht schlimm ist, im Gegenteil)...

Du selbst sagst, dass auch Du mit STL und Templates arbeitest. Ist es gerade dort nicht besser, einem, der den CODE betrachten und verstehen muss auch in der selben CODE-Zeile die Typen anhand der Namen mitzuteilen.
Also, wenn ich fremden CODE anschaue, der nicht in ungarischer Namenskonvention geschrieben ist, geht bei mir der Streß los, jede headerdatei nach der Deklaration zu durchsuchen.
Und heute ist es doch keine Seltenheit, fremden CODE warten oder erweitern zu müssen.

Nimm mal das einfache Lernbeispiel der Counterklasse. Counter könnte eine Klasse sein, eine Int-Variable oder ein ganz auserirdisches Teil.
Wie erkennst Du also, um was es sich handelt?
Du musst beim Durchlesen des CODES eine Pause einlegen und nachschlagen :-(

Naja, Du wirst schon Deine Gründe haben...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

08.08.2003, 00:25

Re: schreibfaul?

Zitat von »"Jens"«

das kann nicht Dein Ernst sein.

Doch, kann es, und ist es.
Du ahnst garnicht, wie oft diese Diskussion schon geführt wurde. Such mal auf www.c-plusplus.de im Forum danach. Ich sage Dir gleich, was dabei rauskam. Die erfahreneren Programmierer, die schon länger dabei sind, raten von der ungarischen Notation ab. Falls Du keine Lust hast, danach zu suchen, hier ist der direkte Link: http://www.c-plusplus.de/forum/viewtopic.php?t=41464. Lies es Dir mal unvoreingenommen durch. Da geht es erst einmal nur um das "C"-Präfix für Klassen, aber später geht es praktisch nur noch um ungarische Notation (7 Seiten lang!).
Ich weiß, dass ich selbst in meinem Buch auch noch dazu geraten habe. Aber ich habe jetzt gemerkt, dass es ohne genauso gut geht und ich sogar noch ein Stück schneller dabei bin. Vor allem bei der Autovervollständigung hat man Geschwindigkeitsvorteile. Angenommen Du greifst auf eine Klassenvariable zu, die ziemlich viele Variablen vom selben Typ hat. Zum Beispiel die folgenden Variablen:
- int m_iNumObjects;
- int m_iCounter;
- int m_iTextLength;

Ich muss nun vier Zeichen eingeben, nämlich "m", "_", "i" und dann "N", "C" oder "T", bevor Visual C++ weiß, was ich will. Ohne die ungarische Notation reicht ein einziger Buchstabe.
Wie gesagt, das Pointer-Präfix "p_" behalte ich persönlich weiter bei, da man am Namen normalerweise nicht erkennen kann, ob es ein Pointer ist oder nicht.

Zitat von »"Jens"«

Wozu ist dann C++ da? Dann kannst Du doch auch in VB programmieren.

Das ist doch Unsinn! In irgendeiner Sprache zu programmieren sagt doch garnichts über die Schreibweise aus, die man benutzen soll. Du kannst auch in BASIC mit Präfixen arbeiten.

Zitat von »"Jens"«

Also, wenn ich fremden CODE anschaue, der nicht in ungarischer Namenskonvention geschrieben ist, geht bei mir der Streß los, jede headerdatei nach der Deklaration zu durchsuchen.

Dann hast Du entweder eine sehr primitive Entwicklungsumgebung, oder Du weißt nicht, wie Du damit umgehst. Wenn ich was über eine Variable wissen will, lasse ich den Mauszeiger eine Sekunde darauf liegen und Visual C++ zeigt mir sofort an, von welchem Typ die Variable ist. Außerdem wird direkt noch ein eventueller Kommentar dahinter angezeigt.

Zitat von »"Jens"«

Nimm mal das einfache Lernbeispiel der Counterklasse. Counter könnte eine Klasse sein, eine Int-Variable oder ein ganz auserirdisches Teil.
Wie erkennst Du also, um was es sich handelt?

Indem ich vernünftige Namen erteile. Zum Beispiel, wenn ich eine Variable "numObjects" nenne, dann ist klar, dass damit die Anzahl der Objekte (welche das sind, ist ja egal) meine. Damit sollte auch automatisch klar sein, dass es sich um eine ganzzahlige Variable handeln muss. Da lege ich mich dann z.B. auf "int" fest.
Anderer Fall: ich nenne eine Variable "objects". Dann weiß ich, dass die Variable die Objekte enthält. Es muss sich also um eine Liste oder einen Vektor oder Ähnliches handeln. Und bei Zweifeln einfach die Entwicklungsumgebung fragen.

Übrigens: das Wort "Code" ist keine Abkürzung, darum schreibt man es nicht "CODE", sondern "Code".

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

5

08.08.2003, 00:46

@Jens:
Also in Modernen Zeiten Moderner IDEs ist die Ungarische Notation in vielen augen einfach nur noch was zum schmunzeln und zum totlachen (In meiner sicht ist das auch so ;D)

Wir leben nicht mehr in der 8 bit zeit wo es wichtig war an der richtigen stelle einen richtigen Dateitypen zu setzen um platz zu sparen. Das war ja auch der Hintergedanke der Ungarischen Notation.

Heute interessiert es doch keinen Computer mehr ob du einen int oder unsigned int benutzt.

Also Ungarische Notation ist was für ANSI C oder OS-Coding (obwohl ich bei meinem auf die Notation total verzichte [was soll ich damit?]) aber hat in C++ und vorallem in der OOP NICHTS(!!!!) zu suchen.

Für den ganzen neuen Kram den es in der OOP gibt (wie z.B. Interfaces) wäre diese Notation nur ein rückfall. Das einzigste was man in der OOP verwendet ist das m_ präfix! g_ gibt es sowieso nicht da Globale Variablen nach dem OCP verboten sind. (wer C++ codet sollte sich das mal zu herzen legen. da dies eines der wichtigsten OOP gesetze ist)

btw. das C für class stammt nicht aus der Ungarischen Notation selbst sondern wurde sogesehen von MS erfunden für die MFC, da es noch keine NameSpaces gab.

p.s.: Auch wenn ich oft unter DOS programmiere oder unter Linux (CommandLine !!!!!) hatte ich mit einem 80x24 Editor NIE probleme mich in code durchzufinden. Also entweder hast du Probleme mit der Orientierung im Code oder du kapierst den code von vornherein nicht. (Sollte man sich mal zu denken geben lassen.)

Anonymous

unregistriert

6

08.08.2003, 11:42

gute Argumente

danke Jungenz.
Das hat mich ehrlich gesagt etwas zum Nachdenken angeregt.
Aber trotzdem wird mir schlecht, wenn ich nun meine nur mal zum Test umgeschriebene Testklasse sehe ;-)
Ist wahrscheinlich nur ne Gewöhnungssache...

7

08.08.2003, 15:23

Lol !

Naja wenn ihr meint, ich nutzt es weiterhin ist einfach praktischer.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

8

08.08.2003, 15:23

Also heißt es solange ich Mir um den Stil keine Gedanken mache und eher weniger OOP benutze darf ich die noch verwenden ? Zur Zeit mache ich mir sowiso eher mehr Sorgen darüber das ich etwas vernünftiges zu stande bekomme als das ich auf so einen Kram gucke.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

9

08.08.2003, 15:39

Zitat von »"ghostie"«

Lol !

Naja wenn ihr meint, ich nutzt es weiterhin ist einfach praktischer.


Nein mal ganz ehrlich? Wieso sollte man noch ein Fragmet aus der 8 Bit zeit noch benutzen? Es hält echt nur auf, und wenn man mit der STL arbeitet hörts schon ganz auf. Die Ungarische Notation wurde für ANSI C entworfen und nicht für C++ (Auch wenn es einige immer noch nicht begreifen können)

Interessiert es dich ganz ehrlich ob deine variable 8, 16, oder 32 Bit groß ist? ich würde sagen nein. Aber damals vor 6-10 Jahren war das noch wichtig zu wissen, da der Speicherplatz derbst klein war! Und heute? Können wir nichtmal mehr unsere 120GB Festplatten vollpumpen oder unseren 1024MB Ram! Und in zeiten Moderner IDEs ist die Ungarische Notation sowieso schon ausgestorben.

10

08.08.2003, 17:51

Zitat

Für den ganzen neuen Kram den es in der OOP gibt (wie z.B. Interfaces) wäre diese Notation nur ein rückfall.
Ich weis nicht wo du in Interfaces die Ungarische Notation einbringen willst. Ein Interface besteht nur aus Rein Virtuelle Methoden.

Zitat

Die Ungarische Notation wurde für ANSI C entworfen und nicht für C++ (Auch wenn es einige immer noch nicht begreifen können)
Hmm...was hat die Ungarische Notation mit der Sprache zu tun? Die kann man für alle Sprachen verwenden.

Zitat

Interessiert es dich ganz ehrlich ob deine variable 8, 16, oder 32 Bit groß ist? ich würde sagen nein. Aber damals vor 6-10 Jahren war das noch wichtig zu wissen, da der Speicherplatz derbst klein war! Und heute? Können wir nichtmal mehr unsere 120GB Festplatten vollpumpen oder unseren 1024MB Ram! Und in zeiten Moderner IDEs ist die Ungarische Notation sowieso schon ausgestorben.
Na wenn du meinst. Gerade beim Zugriff auf eine Festplatte, ist es schon wichtig das man nicht unnötig viele Daten einliest. Das kostet einfach nur Zeit. Des weiteren hier mal ein kleines Beispiel. Ich hab 512MB RAM. Davon sind normalerweise ca. 30MB belegt. Wenn ich jetzt z.B. SimCity 4 startet hab ich nur noch etwas 50MB frei. Du kannst dir selber ausrechnen wie viel Speicher das Game belegt. Nur weil man heute viel Speicher zur Verfügung hat, heißt das noch lange nicht das ich ihn auch zu müllen muss. Aber dazu noch mal eine andere Frage. Was ist denn wenn du dein Game z.B. auf die PS2 Portierst? Die hat kein GB RAM oder ne 80GB Platte, und was ist wenn du mit Farben arbeitest? Verwendest du für 16Bit Farben auch einfach ein long-Wert?

Also mein Lehrer hat immer darauf bestanden, das die Variablennamen aussagekräftig sind. Er hat einem dafür sogar Punkte abgezogen wenn sie es nett wahren. Die Ungarische Notation oder auch die eigene Notation soll doch nur dafür sorgen das der Code übersichtlicher und leichter lesbar wird. Wenn es einem dabei Hilft die Übersicht im Code zu behalten, sollte man es auch benutzen. Klar es ist etwas mehr Schreibarbeit. Dafür kann ich aber schon beim Lesen erkennen um was für einen Typ es sich handelt. Und mit der IDE kann ich auch umgehen ;)

Zitat

Die erfahreneren Programmierer, die schon länger dabei sind, raten von der ungarischen Notation ab.
Sind wir denn alle Profis?

Letzten Endes muss doch jeder für sich selber entscheiden, wie er seinen Code Stil aufbaut. Denn wenn er in einem Team Arbeitet wird er seinen Stil nicht mehr verwenden. Da ist eh alles festgelegt, und daran MUSS man sich halten, ob es einem gefällt oder nett.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige