Stil der Klammern unwichtig?



  • Wir wissen doch alle dass der einzige wahre Stil der hier ist:

    void foo()
    	{bar();
    	baz();
    	blubb();}
    


  • cooky451 schrieb:

    Wir wissen doch alle dass der einzige wahre Stil der hier ist:

    void foo()
    	{bar();
    	baz();
    	blubb();}
    

    cooky, der einzig wahre Stil ist der:

    void foo() {bar(); baz(); blubb();}
    


  • Wenn schon, denn schon:

    void foo()
    {
            bar
        (); baz
        (); blub
        ();
    }
    

    Der Grund weshalb ich gegen 2-leerzeichen Einrücker bin ist, dass der Code für mich dann spürbar schwerer verständlich ist. Ich erfasse Code, indem ich zuerst die Blockstruktur wahrnehme und dann den Block suche, den ich verändern muss. Nur sind bei 2 Leerzeichen(insbesondre bei NextLine Klammer konvention) die Blockunterschiede zu gering und der Code "verschwimmt" vor meinen Augen. Mir sind deswegen Tabs lieber, weil ich so selbst entscheiden kann, wie die Einrücktiefe ist - und genauso wird meine bevorzugte Einrücktiefe niemand anders aufgezwungen.

    Gut gesagt. 🙂 👍



  • Das Problem mit den Tabs ist halt, dass es eben nur funktioniert, solange man nirgendwo jemals irgendwas ausrichten möchte...

    Random example:

    file << "name;cc_major;cc_minor;num_multiprocessors;warp_size;max_threads_per_mp;max_threads_per_block;regs_per_block;shared_memory;constant_memory;global_memory;clock_rate\n"
             << prop.name << ';'
             << prop.major << ';'
             << prop.minor << ';'
             << prop.multiProcessorCount << ';'
             << prop.warpSize << ';'
             << prop.maxThreadsPerMultiProcessor << ';'
             << prop.maxThreadsPerBlock << ';'
             << prop.regsPerBlock << ';'
             << prop.sharedMemPerBlock << ';'
             << prop.totalConstMem << ';'
             << prop.totalGlobalMem << ';'
             << prop.clockRate * 1000 << '\n'
             << std::endl;
    


  • Ausrichten ist übrigens mein täglich Brot, das muss ich so oft machen...
    Wo ich gerade schon einen Screenshot habe: http://s14.directupload.net/images/130907/7p9iwsld.png

    Der Funktionsaufruf sieht mir nur so gut aus.



  • Und wie hast du das bei den Funktionsaufrufen auf dem Screenshot hinbekommen, ohne Spaces zu verwenden?



  • dot schrieb:

    Das Problem mit den Tabs ist halt, dass es eben nur funktioniert, solange man nirgendwo jemals irgendwas ausrichten möchte...

    Das einzige was dein Beispiel zeigt ist, dass du den Unterschied zwischen Einrücken und Ausrichten nicht verstanden hast. Um das mal zu verdeutlichen:

    \t file << "bla"
    \t      << "bubb";
    

    Niemand hat davon gesprochen keine Leerzeichen zum Ausrichten zu benutzen, es geht um's Einrücken.



  • Gut, so geht's natürlich... 🤡



  • Theoretisch sollte die Methode btw perfekt sein, praktisch wird es da etwas schwieriger. Denn z.B. der auto-completer von Visual Studio rückt nicht abgeschlossene Statements ein, was man, wenn man ausrichten möchte, manuell wieder rückgängig machen muss. Denn eins geht nicht: Zwei Zeilen die unterschiedlich eingerückt sind zusammen auszurichten. Beispiel:

    \t cout << "foo"
    \t\t    << "bar"; // zweiter Tab von VS eingefügt
    

    Da halte ich es allerdings wie otze: Ich richte nichts aus. Oder nur in extremen Ausnahmefällen. Ich finde eh nicht, dass es sonderlich viel zur Lesbarkeit beiträgt, und es kostet nur Zeit und Nerven wenn man mal Namen ändern will.



  • Sobald ClangIDE fertig ist, ist das alles kein Problem mehr.



  • otze schrieb:

    Im zweifelsfall haut man einmal astyle drüber.

    Versteh ich nicht. Dann hat man bei jedem Checkin tausend geänderte Zeilen. Ich weiß nicht, ob du das als Problem ansiehst oder ob ich die Lösung nicht sehe, aber mir scheint, einen projektweiten Codingstyle vorzugeben ist keine so schlechte Idee.



  • Bashar schrieb:

    otze schrieb:

    Im zweifelsfall haut man einmal astyle drüber.

    Versteh ich nicht. Dann hat man bei jedem Checkin tausend geänderte Zeilen.

    Und vorm checkin natürlich nochmal astyle mit den projektweiten Richtlinien. Kann man sicher auch per script/hook/sonstwas erledigen. Funktioniert halt nur nicht, wenn sich jemand anderes schon nicht an die Richtlinien hält...



  • hustbaer schrieb:

    @Gregor
    Dann musst du ein sehr lustiges Leben haben. Ich finde es immer traurig wenn Leute ganz genau verstehen was gemeint ist, aber es auf Teufel komm raus falsch verstehen wollen. Speziell wenn sie diejenigen sind die eine etwas seltsame Vorstellung davon haben was bestimmte Begriffe bedeuten.

    Ok, mag sein, dass meine Begriffsvorstellung hier die abweichende ist. Ich finde es trotzdem lustig. 😉 Sorry, falls ich Dich traurig mache. 😉

    Für mich ist der "Stil" beim Programmieren etwas weniger greifbares. Ich verstehe darunter Aspekte der Art "Welche Sprachmittel setzte ich an welchen Stellen wie für was ein?!", "Wann setze ich bestimmte Patterns ein, welche Patterns nutze ich überhaupt?", "Programmiere ich wenige große Klassen oder viele kleine?", "In welchem Maße setze ich an welchen Stellen auf welches Programmierparadigma?" und so weiter. Ich assoziiere damit also eher Eigenschaften des Codes auf einer etwas höheren Ebene. Die Einrückung ist für mich eine Frage der "Coding Conventions". Es ist halt ein formaler Rahmen auf niederer Ebene, auf den man sich irgendwann einigt. ...mit sich selbst oder mit anderen.

    Zum Thema des Threads: Ich verstehe nicht, warum es irgendwen interessieren sollte, wie John Carmack irgendeinen Code einrückt oder wie er die Einrückung für ein Projekt festlegt. Ich verstehe auch nicht, warum er ein öffentliches Statement abgibt, in dem er sagt, dass es alle überrascht hat, dass das keinen interessiert.



  • Weil andere seine Meinung interessiert ;).



  • Sone schrieb:

    Ausrichten ist übrigens mein täglich Brot, das muss ich so oft machen...
    Wo ich gerade schon einen Screenshot habe: http://s14.directupload.net/images/130907/7p9iwsld.png

    Vielleicht wäre das was für dich:
    http://clang.llvm.org/docs/ClangFormat.html

    ps: Es gibt übrigens mittlerweise nen offiziellen Windows Build von Clang. Der enthält ein Plugin für VS das u.a. auch Clang-Format "kann". Ist zwar alles noch Alpha, aber ich bin schonmal sehr erfreut dass Windows als Plattform nicht länger ignoriert wird.
    Wenn sie den MSVC ABI Support noch komplett bekommen, dann gibt es vielleicht bald mal eine ernstzunehmende Alternative zu MSVC...

    http://llvm.org/builds/



  • @Gregor
    Mir ist halbwegs klar was du und einige (viele?) andere darunter verstehen. Mir ist nur nicht klar warum man immer darauf hinweisen muss dass das was manche (viele?) andere darunter verstehen die falsche Auslegung ist.

    Ich kann mit beiden Definitionen leben - vor allem wenn aus dem Kontext klar ist welche der beiden gerade gemeint ist.

    Ich persönlich verwende auch das Wort "Stil" für beides - also sowohl für das was man auch als "Formatierung" bezeichnen kann, wie auch für minimal "höher-levelige" (greislicher Anglizismus, mir fällt aber gerade nix besseres ein) Dinge wie om man über nen vector mit nem Iterator oder Index drübergeht, ob man RAII verwendet oder haufenweise new/delete do/undo schreibt etc.



  • hustbaer schrieb:

    Sone schrieb:

    Ausrichten ist übrigens mein täglich Brot, das muss ich so oft machen...
    Wo ich gerade schon einen Screenshot habe: http://s14.directupload.net/images/130907/7p9iwsld.png

    Vielleicht wäre das was für dich:
    http://clang.llvm.org/docs/ClangFormat.html

    Hmm. Ich nutze CodeBlocks. Vielleicht... muss man dafür ein Plugin schreiben...



  • hustbaer schrieb:

    BTW: Erst schreibst du dass das alles unwichtig ist, und dann kommst du mit Dingen die dir auf einmal doch wichtig sind. Ich glaube du bist diesbezüglich etwas verwirrt.

    Nein. Du siehst das "unbedeutend" im falschen Kontext. Natürlich macht es für mich einen Unterschied, wie der Code eingerückt ist. Ich kann Code in meinem Stil besser lesen als fremde Stile. Das ist natürlich. Wenn es mal nicht gehen sollte, haue ich aber astyle drüber - mich nervts halt nur, das zu machen, eben wegen der von Bashar genannten whitespace checkins ins SVN.

    Was ich aber niemals tun würde, ist deswegen einen heiligen Krieg anzuzetteln oder Guidelines zu verabschieden etc. Bei Einrückungen gibt es kein "richtig oder falsch". Nur ein "finde ich gut" oder "finde ich nicht so gut". Problematisch wird es erst, wenn jemand guidelines versucht durchzudrücken, die mir das Leben schwer machen - zum Beispiel die genannten 2-Leerzeichen-statt-tab-einrücker(okay, mir fällt gerade auch kein anderes Beispiel ein).



  • otze schrieb:

    hustbaer schrieb:

    BTW: Erst schreibst du dass das alles unwichtig ist, und dann kommst du mit Dingen die dir auf einmal doch wichtig sind. Ich glaube du bist diesbezüglich etwas verwirrt.

    Nein. Du siehst das "unbedeutend" im falschen Kontext.

    Vielleicht schreibst du es im falschen Kontext?

    Was ich aber niemals tun würde, ist deswegen einen heiligen Krieg anzuzetteln oder Guidelines zu verabschieden etc. Bei Einrückungen gibt es kein "richtig oder falsch". Nur ein "finde ich gut" oder "finde ich nicht so gut". Problematisch wird es erst, wenn jemand guidelines versucht durchzudrücken, die mir das Leben schwer machen - zum Beispiel die genannten 2-Leerzeichen-statt-tab-einrücker(okay, mir fällt gerade auch kein anderes Beispiel ein).

    Coding-Guidelines und deren Durchsetzung sind aber nötig wenn man irgendwie sinnvoll gemeinsam an einem Projekt arbeiten will.
    Dauernd "astyle drüberhauen" ist nämlich keine Lösung -- das kann ich nur als schlechten Scherz durchgehen lassen.



  • hustbaer schrieb:

    Mir ist halbwegs klar was du und einige (viele?) andere darunter verstehen. Mir ist nur nicht klar warum man immer darauf hinweisen muss dass das was manche (viele?) andere darunter verstehen die falsche Auslegung ist.

    Wenn ich sage, dass ich die Nutzung des Begriffs "Stil" für die Klammersetzung lustig finde, dann ist das bei mir so eine Art Galgenhumor, der auf jahrelanger Enttäuschung basiert. Es kommt durchaus häufiger mal vor, dass in einem Threadtitel von "Progmmierstil", "Stil" oder ähnlichem die Rede ist. Ich denke mir dann immer "Oh, das könnte eine interessante Diskussion sein". Dann klicke ich da drauf und finde etwas wie das da oder das da. ...also nur wieder irgendeine langweilige Formatierungsfrage. Ich glaube auch, dass das nicht nur mir so geht. Bei einer der verlinkten Diskussionen ist zum Beispiel Bashar auf die Verwendung dieses Begriffs angesprungen.

    ...ok, ich muss zugeben, dass bei diesem Thread aus dem Titel hervorgeht, um was es sich handelt.


Anmelden zum Antworten