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

21

14.04.2009, 12:29

Zitat von »"unsigned long"«

Das Problem an der ungarischen Notation ist, dass sie nicht für OOP ausgelegt wurde sondern nur für primtive Typen und in C++ wirft man eigentlich recht wenig mit primitiven Typen um sich. Jedenfalls ich nicht ;)

selbst wenn man viel mit primitiven typen um sich wirft, hat man doch viel zu oft ne klasseninstanz, und dann steht man ohne typpräfix da. ungarische notatio ist gut in C, wo man funktionen nicht überladen kann, und dann zwangsläufig zu konstrukten wie acosf kommt. aber in C++? nicht mit mir ;)

@ulong: er wollte die ungarische notation bei deutsch statt C++ demonstrieren ;)

//EDIT: 1. ich schreib zu langsam
2. also ich fands ne gute idee, außer das mans nciht auf den ersten blick versteht ;)

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

22

14.04.2009, 12:32

Ich verwende in meinem Programmen auch die UN, weil das im Buch (C++ für Spieleprogrammierer) auch so gemacht wurde (vielleicht aber auch nur um Anfängern das Code-Lesen zu vereinfachen)...
Allerdings habt ihr schon recht, dass es wirklich nur bei den primitiven Typen wirklich sinn macht, aber keine schreibt, wie man es denn dann richtig macht :D
Hat jemand einen tollen Link zu einer guten Notation für C++? :)

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

23

14.04.2009, 13:03

chrische5
Du machst doch auch nicht hinter jeden Satz einen Strichpunkt oder schreibst Anmerkungen statt in Klammern hin ein /**/-Konstrukt. In sofern kann eine Übertragung wohl eher kaum eine ernsthafte Kritik an der ungarischen Notation sein.

Im allgemeinen lehne ich die ungarische Notation auch eher ab. Ich finde nicht, dass der Code durch ein m_ hübscher wird und gerade, wenn man dann noch die Typen durch Buchstaben kennzeichnet, wird es richtig hässlich. Ich halte mich für gewöhnlich auch an die STL und nutze _ als Leerzechen und als Postfix für Membervariablen. Ein _ als Postfix ist auch schneller geschrieben als ein m_i ;)

24

14.04.2009, 13:06

Hallo

Zitat von »"Fred"«

chrische5
Du machst doch auch nicht hinter jeden Satz einen Strichpunkt oder schreibst Anmerkungen statt in Klammern hin ein /**/-Konstrukt. In sofern kann eine Übertragung wohl eher kaum eine ernsthafte Kritik an der ungarischen Notation sein.


Naja ein Satzzeichen mache ich schon am Ende eines Satzes und kommentieren kann man ja auch. Die Wortart ergibt sich aber aus dem Kontext und braucht keinerlei besonderer Kennzeichnung.

chrische

25

14.04.2009, 14:31

Zitat von »"unsigned long"«

Generell, wenn man den guten alten Standard ließt, sollte man von UpperCaseLowerCase-Gewuschel absehen und alles lowercase schreiben und als Wort-Trenner _ benutzen. Siehe STL oder boost.
Sollte man? Kaum. Nicht mal, um einheitlich zu bleiben. Es gibt genügend C++-Bibliotheken, die sich nicht an den standard_stil halten. Was auch gut so ist, man sollte den Programmierern nicht wie in Java alles vorschreiben.

Zitat von »"unsigned long"«

Protected oder private Attribute mit "<typ> <attributname>_;" deklarieren. Das Postfix "_" sagt schon aus, dass es ein Member ist und muss nicht am Anfang stehen.
Genauso sagt ein "m_" am Anfang aus, dass es ein Member ist.

Zitat von »"unsigned long"«

Nö. Aber als Suffix kann man es nicht nehmen. m_ ist ungarische Notation und das die in C++ nichts zu suchen hat wissen wir wohl alle. Also "_" als Postfix ;)
Schon wieder so ein Dogma. "m_" ist vielleicht ein Relikt der ungarischen Notation, aber wenn man es nur für Member verwendet, kann es ganz praktisch sein. Genauso gut kann man "My" oder "my" oder irgendwas nehmen. Mit dem nachgestellten Underscore bist du vom Prinzip der UN, Variablen nach ihrem Typ und Kontext zu kennzeichnen, nicht weit entfernt. Aber klar, besser ein "_" danach als ein "m_" davor - Hauptsache keine UN. :roll:

Überhaupt halte ich es für fragwürdig, den eigenen Codestil vorschreiben zu wollen und fremden mit zweifelhaften Argumenten als schlecht darzustellen. Dass das unter Geschmackssache geht, wurde ja bereits gesagt.

Anonymous

unregistriert

26

14.04.2009, 14:44

Aber das andere einem die UN regelrecht auf aufzuhalsen oder dem Java-Stil sinnlos zu übernehmen - Macht ja jeder so - ist richtig, gell?

Ja ja, ... (du mich auch würde ich jetzt am liebsten sagen, aber ich lass es mal)

27

14.04.2009, 14:50

Zitat von »"unsigned long"«

Aber das andere einem die UN regelrecht auf aufzuhalsen oder dem Java-Stil sinnlos zu übernehmen - Macht ja jeder so - ist richtig, gell?
Nein, hab ich aber auch nirgends behauptet, lass doch solche Unterstellungen. Ich halte selber nicht viel von der UN. Aber nur weil "m_" ursprünglich davon abstammt und sich trotzdem oft als praktisch erweist, braucht man nicht zu pauschalisieren, indem man den Underscore grundsätzlich bevorzugt, obwohl das Prinzip das Gleiche ist.

Zitat von »"unsigned long"«

Ja ja, ... (du mich auch würde ich jetzt am liebsten sagen, aber ich lass es mal)
Du magst wohl keine Gegenargumente? Trotzdem ist das kein Grund, beleidigend zu werden.

Anonymous

unregistriert

28

14.04.2009, 14:56

Nexus
Doch ich mag Gegenargumente, aber dieses Thema ist genau so lausig wie das der Papst Kondome verbieten will und Immunschwächekrankheiten mit Freundschaften "heilen" will. UN wird doch nicht mehr als praktisch benutzt "weil es toll ist und jeder alles erkennt" (bla bla bla, Bullshit bei modernen IDEs) sondern weil jeder Schwanz es benutzt und man nicht in der Ecke stehen möchte.

Frei nach dem Motto: Milliarden Fliegen können nicht irren, fresst mehr Scheiße!

p.s.: JA ich habe nen schlechten Tag!

29

15.04.2009, 14:41

Um es nochmals klarzustellen: Ich habe nie behauptet, die UN sei gut, geschweige denn damit argumentiert, dass sie immer noch oft eingesetzt wird, also gut sein muss.

Es ging mir gar nicht um die Ungarische Notation an sich, sondern um die Tatsache, dass ein Relikt wie "m_" nur aus dem Grund als schlecht dargestellt wird, weil es mal etwas mit UN zu tun hatte. Während das nachgestellte "_" das gleiche Prinzip verfolgt, nämlich Variablen je nach Typ, Speicherklasse oder Einsatzgebiet so benennt, dass eine dieser Eigenschaften anhand des Bezeichners erkennbar ist. Im Grunde genommen geht es also bei beiden Stilen ums Gleiche. Und das Dogma "UN ist schlecht" reicht mir nicht als Argument, um "m_" zu verteufeln, gleichzeitig aber "_" gutzuheissen.

Tut mir leid wegen der vielen Wiederholungen, aber das scheint noch nicht ganz rübergekommen zu sein. Ist mein Einwand jetzt verständlich?

Werbeanzeige