Ungarische Notation - Ein großes Missverständniss



  • Das mit den 100% Warning-freien sourcen liegt ganz einfach daran das wir mittlerweile nicht mehr in C/C++ entwickeln. 🙂 bzw. 😞



  • kingruedi schrieb:

    Naja, man kann eben darüber streiten, ob es aus OO Sicht nicht eh verschiedene Typen für Column und Row geben sollte 😉

    Da hast Du natürlich grundsätzlich recht. Ich bin jedenfalls ein großer Fan der "wirklichen" ungarischen Notation. Liegt wohl daran das ich schon häufiger in der Situation gewesen bin fremden Code bearbeiten zu müssen der entweder
    a) in einer nicht-OO-Sprache implementiert war
    oder
    b) die OO-Merkmale der verwendeten Sprache eben nicht ausgenutzt hat.

    In meinen Augen ist folgender (pseudo-) Code einfach herrlich übersichtlich:

    // prefix "s" = safe string; "us" = unsafe string
    
    us = UsRequest("name");
    usName = us;
    recordset("usName") = usName;
    sName = SFromUs(recordset("usName");
    WriteS(sName);
    

    Wennn da irgendwo ein

    sName = usName;
    

    vorkommt, ist (mir) auf den 1.Blick klar, das es sich um einen Bug handeln muss.

    Für mich ist jedenfalls ein Methodenaufruf wie

    foo = FooFromBar(bar);
    

    "leserlicher" als

    foo = Convert_Bar_To_Foo(bar)
    

    Mir ist schon auch klar das es andere Konventionen gibt, die vielleicht sogar besser sind. Das wichtigste ist jedenfalls dass es eine Konvention gibt, und man sich auch daran hält. Es gibt in kaum schlimmeres als Code der gemischte Konventionen bzw. gar keine verwendet. Sich in sowas reinzuarbeiten ist sehr, sehr mühsam.



  • unfan schrieb:

    Für mich ist jedenfalls ein Methodenaufruf wie

    foo = FooFromBar(bar);
    

    "leserlicher" als

    foo = Convert_Bar_To_Foo(bar)
    

    Das war ja auch nur ein Beispiel, um eindeutig zu sagen, was die Funktion macht. Wie man die im Endeffekt nennt, ist jedem selbst überlassen. FooFromBar ist auf jeden Fall eine sehr gute Alternative.



  • Jester schrieb:

    kingruedi schrieb:

    Hat eigentlich einer von euch den joelonsoftware Artikel gelesen?

    Da du scheinbar der einzige bist kannst Du vielleicht auch gleich noch erklären, warum wir alle das Thema verfehlen wenn wir sagen, daß der Compiler das besser kann. 🙄

    Weil

    int colFoo=getCol();
    int rowBar=getRow();
    //...
    rowBar=colFoo;
    

    für den Compiler kein Problem ist, was aber sicher ein logischer Fehler ist. Lies dir einfach mal den joel Artikel durch.



  • doppelt: s.u.



  • KlausB schrieb:

    Hallo

    Ich achte ebenfalls strengstens auf Compiler-Warnings. In unserer Firma sind alle Sourcen zu 100% Warning-frei.

    Dann ist SICHER die Warnstufe nicht auf alle gestellt ,
    denn sonst haettet ihr 100erte Warnings (sicher)

    Es sei denn ihr verzichtet auf alles (zB VCL....)
    und schreibt reinen API-Code (selbst dann ist es eher unwarscheinlich)

    Ach? Naja, ich schaffe es bei meinem aktuellen Projekt auf der Arbeit trotzdem auf Stufe 4 und Kompatibilitätswarnungen sauber durchzukompilieren. Und das, obwohl ich die (scheiß verbuggten) MFC einsetze... 😮

    kingruedi: Darüber, dass man Variablen sinnvoll benennen sollte streiten wir hier aber nicht, oder?



  • kingruedi schrieb:

    für den Compiler kein Problem ist, was aber sicher ein logischer Fehler ist. Lies dir einfach mal den joel Artikel durch.

    Schalt Dein Hirn an und lies was wir hier schreiben und: Trau uns zu, daß wir auch ein bißchen Ahnung haben.

    Mit verschiedenen Typen meckert hier der Compiler und ich muß nicht hoffen, daß ich's beim Draufschaun zufällig sehe.
    Siehe zum Beispiel den Link den ich weiter oben gepostet habe. (Aber den haste garnicht angeschaut weil ich ja den Artikel nicht gelesen hab, was?)


Anmelden zum Antworten