Codestyle: Einrücken untergeordneter Abschnitte?



  • 314159265358979 schrieb:

    Tabs mitten im Text sind tödlich.

    Aber exakt das ist die Grundbedeutung von Tabs. Tabs auf Unix Systemen: "erhöhe die aktuelle Cursorposition auf ein vielfaches von 8". Und das System ist gut für alles, was in irgendeiner Form tabellarisch ist: zum Beispiel auch Arrays.


  • Mod

    314159265358979 schrieb:

    Nö, ihr wollt mich belehren, also reibt mir die Argumente unter die Nase oder lasst es bleiben.

    Quark, mal wieder, leider.

    Es ist mir egal, was du treibst.



  • Ich habe selten so viele Parameter das ich es nicht in einer Zeile schreiben kann. Und normalerweise sind sie dann auch nicht so verschachtelt wie in diesem Beispiel.
    Aber ich würde meist jeden Parameter in eine Zeile schreiben.

    GetElements().push_back(SomeObject(param1,
                                       param2,
                                       param3,
                                       param4,
                                       param5,
                                       param6, 
                                       param7, 
                                       param8, 
                                       param9, 
                                       param10));
    


  • @otze: Nein. Tabs mitten im Text zerstören bei geänderter Tabbreite meist die Formatierung. Schon oft genug geärgert.

    @SeppJ: Dann hör auf, mir ans Bein zu pissen.


  • Mod

    314159265358979 schrieb:

    @SeppJ: Dann hör auf, mir ans Bein zu pissen.

    Dann hör auf hier rumzukotzen.



  • Einzeiler schrieb:

    Ich habe selten so viele Parameter das ich es nicht in einer Zeile schreiben kann. Und normalerweise sind sie dann auch nicht so verschachtelt wie in diesem Beispiel.
    Aber ich würde meist jeden Parameter in eine Zeile schreiben.

    GetElements().push_back(SomeObject(param1,
                                       param2,
                                       param3,
                                       param4,
                                       param5,
                                       param6, 
                                       param7, 
                                       param8, 
                                       param9, 
                                       param10));
    

    find ich ehrlich gesagt bisher als schlechteste lösung in diesem thread.
    da find ich selbst

    GetElements() 
        .push_back( 
            SomeObject 
                ( 
                    param1, 
                        param2, 
                            param3, 
                                param4, 
                                    param5, 
                                    param6, 
                                param7, 
                            param8, 
                        param9, 
                    param10) 
                );
    

    besser :D:D



  • Davon, Tabs als Tabs im Quellcode zu lassen halte ich nicht viel, ganz besonders, wenn verschiedene Leute verschiedene Einzugsbreiten eingestellt haben (das sollte man innerhalb eines Projektes meiner Meinung nach auch dringendst vermeiden). Das liegt vor allem daran, dass ein Tab außerhalb der Voreinstellungen von Visual Studio in aller Regel als 8 Leerzeichen verstanden wird, was für Einrückung durchaus als viel zu breit angesehen werden kann. Habe ich Code mit Visual Studio auf diese Weise geschrieben und schaue ihn mir unter Linux mit Emacs an, sieht das schon mal nicht sehr hübsch aus.

    Damit könnte man aber womöglich noch umgehen. Schwieriger ist es in anderer Richtung - ich fange unter UNIX an und portiere den Kram dann nach Windows. Ihr kennt die Mischform vermutlich, Tabs da zu substituieren wo acht Leerzeichen hintereinander einrücken. Jetzt kommt also eine Codedatei daher, in der eine Zeile mit sechs Leerzeichen und die nächsttiefere mit einem Tabulator eingerückt ist. Das ist in VS, wo ein Tab vier Leerzeichen breit ist, kaum mehr lesbar. Schlimmer noch: Wenn da jetzt ein anderer davorsitzt, als der, der den Code ursprünglich geschrieben hat, sieht der zunächst nicht, dass der Code eigentlich vernünftig eingerückt ist und kümmert sich selbst nicht ausreichend darum, die Einrückung zu erhalten.

    Wenn man auf Teufel komm raus boshaft sein will, kann man wohl sagen, dass ich das so sehe, weil "ich zu doof bin, Tabs und Leerzeichen richtig zu setzen", aber ich betrachte das von einer anderen Seite. Ein Verfahren, das von allen beteiligten Programmierern bei der Auswahl von Whitespaces eiserne Disziplin verlangt, ist schon bei nur einer beteiligten Person auf Dauer nicht wirklich tragbar, und wenn man mit verschiedenen Tools und verschiedenen Leuten arbeiten muss, fliegt das mit hoher Wahrscheinlichkeit schnell auseinander. Es zu verlangen, vernachlässigt meines Erachtens die menschliche Natur.

    Hand aufs Herz: Wenn ich deinen Code durchgreppe, finde ich da ganz bestimmt keine einrückenden Leerzeichen drin?

    Ansonsten denke ich, dass man unterscheiden muss zwischen benutztem und verlangtem Stil. Zum Beispiel sieht man in meinem Code häufig Dinge wie

    class foo {
    public:
      inline double bar() const { return bar_; }
      inline int    baz() const { return baz_; }
    
    private:
      double bar_;
      int    baz_;
    };
    
    function_call(param1, param2,    // Gemeint ist: Bei vielen Parametern
                  arg1, arg2, arg3,  // solche, die zu einer Sinneinheit gehören,
                  wert);             // in einer Zeile hintereinander.
    

    Ich finde das einfach besser lesbar, und mir ist das wichtiger als der zusätzliche Schreibaufwand. Kudos an Microsoft an dieser Stelle übrigens, die Alt-Shift-Kiste zum synchronen Bearbeiten mehrerer Zeilen ist echt praktisch (vor allem, wenn man seine Funktionen schon so justiert hat :D).

    Ich käme aber nie auf die Idee, das in einem Styleguide festzuschreiben, weil ein vorgeschriebener Stil den Charakter eines kleinsten gemeinsamen Nenners haben muss. Es geht da ja nicht darum, die Position jedes einzelnen Zeichens genau festzulegen (damit vergrault man sich die Leute nur), sondern darum, sicherzustellen, dass der Code für andere in endlicher Zeit entzifferbar ist.

    Wenn man sich (nur als Beispiel) den Google-Styleguide ankuckt, stellt man fest, dass sich nur ein kleiner Teil mit Formatierung herumschlägt, und dass große Teile dieses Abschnitts bewusst vage gehalten sind; das machen die da schon ganz richtig. Es muss nicht jeder alles mögen, was in einem Styleguide steht, aber wo man einem Programmierer etwas vorschreibt, was dieser nicht mag, sollte man bessere Gründe haben als "Manager X findet das hübscher so".



  • 314159265358979 schrieb:

    Tabs mitten im Text zerstören bei geänderter Tabbreite meist die Formatierung. Schon oft genug geärgert.

    Cool, jetzt gibst du dir schon selbst Gegenargumente.



  • 314159265358979 schrieb:

    @otze: Nein. Tabs mitten im Text zerstören bei geänderter Tabbreite meist die Formatierung. Schon oft genug geärgert.

    Exakt das habe ich gesagt. Unixsysteme gehen den anderen Weg: anstatt Tabs im Text zu verbieten, setzen sie per konvention die Tabbreite auf 8.



  • SeppJ schrieb:

    Dann hör auf hier rumzukotzen.

    sry, i'm drunk! okay, eigentlich nich. aber ich mag erdbeeren! srsly!

    Michael E. schrieb:

    Cool, jetzt gibst du dir schon selbst Gegenargumente.

    In meinen Aussagen ist kein Widerspruch. Du musst nur genau lesen.



  • otze schrieb:

    Exakt das habe ich gesagt. Unixsysteme gehen den anderen Weg: anstatt Tabs im Text zu verbieten, setzen sie per konvention die Tabbreite auf 8.

    Dann kapier ich deine Aussagen nicht. Mein Standpunkt: Tabs mitten im Text sind Mist. Deine Meinung dazu zusammengefasst?



  • otze schrieb:

    314159265358979 schrieb:

    @otze: Nein. Tabs mitten im Text zerstören bei geänderter Tabbreite meist die Formatierung. Schon oft genug geärgert.

    Exakt das habe ich gesagt. Unixsysteme gehen den anderen Weg: anstatt Tabs im Text zu verbieten, setzen sie per konvention die Tabbreite auf 8.

    Auch nur so lange man keinen vernünftigen Editor anwirft, wo man die Tab-Breite einstellen kann 🤡



  • 314159265358979 schrieb:

    Dann kapier ich deine Aussagen nicht. Mein Standpunkt: Tabs mitten im Text sind Mist. Deine Meinung dazu zusammengefasst?

    Das ist eine Konvention wie viele andere auch. Man kann sich da jetzt hinstellen und sagen: "aber meine Konvention ist besser", fällt damit aber auf die Schnauze, da die Konventionen jeweils unterschiedliche Dinge können und man leicht in Situationen kommt, wo entweder die eine oder die andere besser wäre. Das Problem ist nicht entscheidbar, da die Vergleichbarkeit fehlt.

    Ich bin ein Tabber mit tabwith=4, aber mir ist das am Ende relativ Schnurz. Wenn ich Code-Konvention 2 oder 8 vorgesetzt kriege und die IDE so einstellen muss, dass mir die Tabs automatisch Leerzeichen erzeugen, ist mir das völlig egal. Alles eine Sache der Gewöhnung. Für mich als Einzelperson ist es egal, ob ich spaces oder tabs verwende. Da muss ich nur darauf achten, dass ich zu mir selbst Konsistent bin. Im Team nehme ich das, was sich als Konsens anbietet oder bereits etabliert ist.

    Also zusammengefasst: Deine Meinung in ihrer Pauschalität ist Quark. Mal wieder, leider.



  • Und wo ist es besser Tabs mitten im Text zu verwenden? Es hat ausschließlich nachteile.



  • Ich benutze mittlerweile selber Spaces, aber früher habe ich das mit Tabs und Spaces gemacht. Und zwar Tabs immer nur am Anfang der Zeile, und Spaces wenn man sich an Zeichen orientiert.

    Bsp: (Alles was nicht Tabs sind sind Spaces :D)

    class X {
    private:
    {TAB}int M_x;
    public:
    {TAB}void setX(int x)  { M_x = x; }
    {TAB}int  getX() const { return x; }
    }
    


  • Ich finde, seldon hat das alles schön gesagt. Aufzwingen sollte man niemandem etwas und irgendwie geschieht das in diesen Diskussionen ziemlich häufig: Das ist hässlich, mach das auf keinen Fall so! Habe ich ja auch getan, gebe ich reuhaft zu.

    Dennoch habt ihr mich überzeugt die Tabs in Leerzeichen-Tabs im Editor umzuwandeln. Mir geht es so ein wenig darum, dass ich bei geschriebenem OpenSource-Code mit so wenig Widerstand bzgl. des Stils rechnen kann wie möglich. Mir graut es Code zu veröffentlichen. Nicht, weil ich ihn nicht effektiv, fehlerfrei oder schlecht designed halte; sondern weil ich keine Lust habe wegen dem Stil in irgendeiner Weise abgestempelt werden. ^^



  • @Eisflamme
    Ich verstehe dein Problem nicht ganz, und deinen Entscheindungsfindungsprozess auch nicht wirklich.

    Ich würde einfach "meinen" Stil durchziehen, aber gut, das bin ich.

    Wenn du da Bedenken hast, dann machs doch so: such dir Open-Source Projekte die folgende Bedingungen erfüllen

    * Der Code-Stil sagt dir einigermassen zu
    * Das Projekt geniesst allgemein halbwegs gutes Ansehen
    * Das Projekt wird kaum wegen komischem Stil/unübersichtlichem Code/... kritisiert

    Und dann machst du 1:1 den Stil eines dieser Projekte nach.



  • 314159265358979 schrieb:

    Und wo ist es besser Tabs mitten im Text zu verwenden? Es hat ausschließlich nachteile.

    Tabellen. Matrizen. Alles was irgendwie strukturierte Daten sind. Wie ich bereits dargelegt hab. Aber wir wissen ja bereits, dass du ein ziemlicher Sturkopf bist. Alles was nicht von dir kommt, kann nicht begründet sein, selbst wenn es Begründungen sind. Damit beende ich hier auch die Diskussion mit dir :).

    @Eisflamme Es ist völlig egal, wie du einrückst. Wer sich dein Projekt holt und sich mit dem Code auseinandersetzt, wird noch den Formatierungsbutton seiner IDE finden. Und der ist es völlig egal, ob du Tabs oder spaces verwendest.



  • otze schrieb:

    Tabellen. Matrizen. Alles was irgendwie strukturierte Daten sind.

    Ne. Genau dort zerfällt alles, wenn die Tabbreite mal nicht stimmt, oder irgendwo gepasted wird und Tabs durch X Leerzeichen ersetzt werden.



  • Aber erkennt der nicht,wenn in einem Fall tab nur einem einfachen Leerzeichen entspricht? Fall doch,gäbe es doch kein Problem.


Anmelden zum Antworten