Sauberer Code



  • A foo(){}
    

    Da erkennt man aber auch auf einen Blick, dass es sich um eine leere Parameterliste handelt.



  • Das (void) ist ein syntaktischer Spezialfall, den man sich für ANSI-C ausgedacht hat, weil man die Kompatibilität zu K&R bewahren wollte. In C++ sollte man das IMHO nicht verwenden. Das Argument von großbuchstaben finde ich nicht überzeugend. Nichtmal ansatzweise, sorry.



  • Ich würde die Information, dass es man da dran erkennen könnte, verwirrender finden, als die Erkenntnis, die man dadurch gewinnt.



  • Ich mach es zwar mittlerweile auch ohne extra void in der Klammer, da ich möglichst reduzierten (auch optisch) Code bevorzuge (sonst krieg ich Krämpfe im Kopf), finde die Konsistenz aber an sich ganz schnicke.



  • Namenloser324 schrieb:

    Ich mach es zwar mittlerweile auch ohne extra void in der Klammer, da ich möglichst reduzierten (auch optisch) Code bevorzuge (sonst krieg ich Krämpfe im Kopf), finde die Konsistenz aber an sich ganz schnicke.

    Addendum:
    Im Endeffekt aber wieder völlig nichtiges Thema, hauptsache man macht es konsistent.



  • Tja - da sind wir eben verschieden.

    wenn ich foo() in meinem Code sehe, sehe ich sofort, daß das keine Deklaration ist, und wenn ich foo(void) sehe, weiß ich sofort das Gegenteil.

    Würde ich für beides "foo()" schreiben, dann bräuchte ich Kontext, bspw., was vor dem "foo()" steht - ein Klassenbezeichner, ein Gleichheitszeichen, ein Operator oder was Anderes.
    Das wäre mir eine unnötige Einbuße an Codelokalität - und Codelokalität ist mir wichtig 💡

    Also bleibt's beim (void).



  • Namenloser324 schrieb:

    Namenloser324 schrieb:

    Ich mach es zwar mittlerweile auch ohne extra void in der Klammer, da ich möglichst reduzierten (auch optisch) Code bevorzuge (sonst krieg ich Krämpfe im Kopf), finde die Konsistenz aber an sich ganz schnicke.

    Addendum:
    Im Endeffekt aber wieder völlig nichtiges Thema, hauptsache man macht es konsistent.

    nein. sowas nichtiges sollte man schon so machen wie alle anderen.



  • Mechanics schrieb:

    Ich hasse Denglisch. Ich kann es schon nicht ausstehen, wenn jemand deutsche Bezeichner verwendet, aber dann kommst du auch noch mit gemischten Bezeichnern wie getKontonummer(). Wie kann das sauber sein?

    Es ist sauber. Wenn man deutsche Bezeichner nimmt, und dafür gibt es durchaus gute Gründe, dann ist getKotonummer vollkommen ok.



  • volkard schrieb:

    Namenloser324 schrieb:

    Namenloser324 schrieb:

    Ich mach es zwar mittlerweile auch ohne extra void in der Klammer, da ich möglichst reduzierten (auch optisch) Code bevorzuge (sonst krieg ich Krämpfe im Kopf), finde die Konsistenz aber an sich ganz schnicke.

    Addendum:
    Im Endeffekt aber wieder völlig nichtiges Thema, hauptsache man macht es konsistent.

    nein. sowas nichtiges sollte man schon so machen wie alle anderen.

    Hauptsache man macht es konsistent steht da. D.h. arbeitet man in einem Projekt einigt man sich entweder auf eine Variante oder folgt halt der Masse falls du mit deiner Implikation, dass es alle so machen würden, recht hast.
    Arbeitet man alleine macht man es halt wie man möchte nur eben konsistent. Seitenweise (Achtung: Übertreibung) drüber zu diskutieren ist halt massive Zeitverschwendung.



  • Namenloser324 schrieb:

    volkard schrieb:

    Namenloser324 schrieb:

    Namenloser324 schrieb:

    Ich mach es zwar mittlerweile auch ohne extra void in der Klammer, da ich möglichst reduzierten (auch optisch) Code bevorzuge (sonst krieg ich Krämpfe im Kopf), finde die Konsistenz aber an sich ganz schnicke.

    Addendum:
    Im Endeffekt aber wieder völlig nichtiges Thema, hauptsache man macht es konsistent.

    nein. sowas nichtiges sollte man schon so machen wie alle anderen.

    Hauptsache man macht es konsistent steht da. D.h. arbeitet man in einem Projekt einigt man sich entweder auf eine Variante oder folgt halt der Masse falls du mit deiner Implikation, dass es alle so machen würden, recht hast.
    Arbeitet man alleine macht man es halt wie man möchte nur eben konsistent.

    nein. sowas nichtiges sollte man schon so machen wie alle anderen.

    Namenloser324 schrieb:

    Seitenweise (Achtung: Übertreibung) drüber zu diskutieren ist halt massive Zeitverschwendung.

    Kein Vergleich zur Zeitverschwendung, die dadurch entsteht, daß man sich hier einen unüblichen Stil angewöhnt und jedes Stück Code, was man posten will, vorher bereinigen muss, damit das obligatorische "(void) ist in C++ nicht mehr nötig" nicht kommt. Oder gegen den Effizienzverlust, wenn der unwissende Chef (void) in den Styleguide reinschreibt, und jeder Mitarbeiter tagelang drüber stolpert. Vom künstlich erzeugten Mißmut ganz abzusehen. Außerdem nehme ich die Fragen von (void)-Programmierern nicht so ernst, und das wird sicherlich noch vielen anderen so gehen. Eben weil dieser Punkt nicht andeutungsweise strittig wäre, sondern alle () schreiben.



  • würde ich alles so machen wie alle anderen, bekäme ich auch nur die Codequalität, die alle anderen haben. Überlegungen zur Optimierung der Codelokalität führen mich zwangsläufig zu (void).

    mit dem Argument, es käme von C, müßte ich ja auch auf struct verzichten, weil es in C++ die Alternative class mit public gibt.



  • großbuchstaben schrieb:

    mit dem Argument, es käme von C

    Das ist nicht das Argument. Es ist in C genauso unnatürlich wie in C++, aber als Kompromiss wegen der K&R-Kompatibilität nicht zu vermeiden.



  • Ne, in C ist es sinnvoll.

    //C
    void f();
    f(42); //kompiliert
    void f(void);
    f(42); //error: f nimmt 0 parameter
    
    //C++
    void f();
    f(42); //Error: f nimmt 0 parameter
    

    void muss man in C für eine Funktion ohne Parameter angeben. In C++ ist es sinnloses Rauschen.



  • nwp3 schrieb:

    Ne, in C ist es sinnvoll.

    Ich meinte das vom Sprachdesign her. Dass es das gibt, und dass es in C benutzt werden sollte ist unstrittig.



  • es ist kein sinnloses Rauschen. (void) ermöglicht, Deklarationen von Funktionsaufrufen zu unterscheiden, ohne Kontext zu sehen.

    Code auf das Mininimum zu reduzieren, indem man jegliche Redundanz vermeidet, wäre eine Strategie, um etwa eine Platzierung beim Ioccc zu gewinnen.



  • großbuchstaben schrieb:

    es ist kein sinnloses Rauschen. (void) ermöglicht, Deklarationen von Funktionsaufrufen zu unterscheiden, ohne Kontext zu sehen.

    Man sieht aber immer Kontext in echtem Code.

    Was sollen das überhaupt für Deklarationen sein, die so aussehen?

    x();
    

  • Mod

    es ist kein sinnloses Rauschen.

    Mit der Meinung bist du ziemlich alleine. Ich glaube, das Argument ziehst du echt an den Haaren herbei.



  • "nein" - "doch" - "nein" - "wohl" - "nein" - .... 😃



  • Arcoth schrieb:

    es ist kein sinnloses Rauschen.

    Mit der Meinung bist du ziemlich alleine. Ich glaube, das Argument ziehst du echt an den Haaren herbei.

    Also ich verstehe ihn schon und finde nicht, dass das an den Haaren herbei gezogen ist. (Mache es aber wie gesagt selbst auch so, dass ich kein Void reinschreibe)



  • #define function
    
    function int main(){//an function erkenne ich, daß eine Funktion deklariert wird!!!
    }
    

Anmelden zum Antworten