Codestyle: Einrücken untergeordneter Abschnitte?
-
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/... kritisiertUnd 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.
-
Eisflamme schrieb:
Sagen wir, ich habe ein Objekt mit einem ctor mit 10 Elementen (ob das jetzt zu viel ist, sei mal dahingestellt)
Nein, es sei nicht dahingestellt. Es ist zu viel. Wenn man sich angewöhnt, den Funktionen maximal 3-4 Parameter zu geben, stellt sich die Frage nämlich garnicht, wie man Aufrufe mit 10 Parametern einrücken sollte.
Klar gibts immer wieder mal Ausnahmen, wo man nur schwer drumrum kommt.Was dein Trainwreck angeht: Lässt sich vermeiden.
auto const& obj = SomeObject(arg1, arg2); GetElements().push_back(obj); //oder: auto& elems = GetElements(); elems.emplace_back(arg1, arg2);
-
Also ich finde,dass es in vielen umfeldern normal ist viele parameter zu haben. bei irgendeiner applikation mit personendaten z.b. kommen halt mal 10 oder mehr zusammen. aber selbst bei 4 Parametern wird die Zeile schnell lang,wenn man lange Namen hat. und manchmal braucht man leider lange Namen,wenn man präzise sein will.
in dem Beispiel hast du natürlich recht...
-
314159265358979 schrieb:
cooky bevorzugt z.B. 4 Spaces, ich verwende 8.
314159265358979 schrieb:
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.
1{tab}{tab}X 12345{tab}X ist bei cooky das passende 1.......X 12345...X und bei dir das nicht passende 1...............X 12345...X
-
Ich sag doch Tabs mitten im Text sind Mist!
-
Eisflamme schrieb:
Also ich finde,dass es in vielen umfeldern normal ist viele parameter zu haben. bei irgendeiner applikation mit personendaten z.b. kommen halt mal 10 oder mehr zusammen.
Selten. Normalerweise werden zusammengehörige Daten gepackt, d.h. z.B. ist die Adresse in den Personendaten ein einzelnes Attribut, und nicht Straße, Hausnummer, Postleitzahl, Ort, Adresszusatz etc. einzeln.
-
pumuckl schrieb:
Selten. Normalerweise werden zusammengehörige Daten gepackt, d.h. z.B. ist die Adresse in den Personendaten ein einzelnes Attribut, und nicht Straße, Hausnummer, Postleitzahl, Ort, Adresszusatz etc. einzeln.
Und wie entsteht so eine Adresse? Siehe Ursprungsposting. Ersetze SomeObject durch Address und den ganzen Rest sinngemäß.
-
Ich kann das auch in irgendwelche Gruppen stecken, die keinen anderen Sinn haben als aus 20 Attributen 10 zu machen, wobei ich dann zwei Gruppen habe, die mit hundertprozentiger Sicherheit keinen Wiederverwendungswert haben, weil sie nur in diesem Kontext auf diese Weise zusammengestellt sind. Man hat manchmal einfach viele Felder in irgendwelchen Formularen oder an sonstigen Stellen. Das passiert in der Praxis einfach ständig imo. Da kann man sich quasi eine beliebige Geschäftsapplikation bei SAP anschauen oder auch ein Data Warehouse oder auch ein Webformular, wo ein paar Daten mehr stehen.
Oder man schaut sich eine Umfrage an. Man gruppiert da schon, aber an einer gewissen Stelle hat man eben 20 Items. Und dann sind das 20 und nicht 5 und es macht auch keinen Sinn sich künstlich Gruppen auszudenken.
Und wenn ich bei einem 3D-Modell Vertices, Indices, Normalenvektoren, Tangentenvektoren, Texturkoordinaten, Bonekoordinaten uvm. habe, dann macht das für mich imo auch keinen Sinn das großartig weiter zu gruppieren, denn schlussendlich muss man das wieder für genau ein Objekt (nämlich das Modell) an OpenGL oder DirectX übergeben. Das sind dann viele Attribute, doch sie gehören trotzdem logisch zu einer Sinneinheit. Absolut legitim imo.
-
Bashar schrieb:
Und wie entsteht so eine Adresse? Siehe Ursprungsposting. Ersetze SomeObject durch Address und den ganzen Rest sinngemäß.
Die Adresse selbst ist einer der Fälle, wo tatsächlich mal 5 einzelne Attribute sinnvoll sind. Aber Personendaten mit so einer Adresse werden dann eben nicht so zusammengesetzt:
Person p("Manuela", "Mustermann", 38 /*Alter*/, "Bahnhofstr.", 11 /*hausNr*/, 25469 /*PLZ*/, "Halstenbek", "EG links", 47 /*Schuhgroesse*/ /*...*/);sondern so:
Adresse a("Bahnhofstr.", 11 /*hausNr*/, 25469 /*PLZ*/, "Halstenbek", "EG links"); Person p("Manuela", "Mustermann", 38, a); /* ... */
-
314159265358979 schrieb:
Ich sag doch Tabs mitten im Text sind Mist!

Unixsysteme gehen den anderen Weg: anstatt Tabs im Text zu verbieten, setzen sie per konvention die Tabbreite auf 8.
Also Textverständnis bleibt bei deinem Feldzug auch außen vor, oder?
-
Eisflamme schrieb:
Bashar:
Du musst ja in Zeile 2 irgendwie bis nach rechts kommen. Bei mir drücke ich solange Tab bis ich eben dort bin. Wenn Du Tabs nicht magst, musst Du entweder die Leertaste gedrückt halten (was mir deutlich zu lange dauern) oder doch die Tab-Taste nutzen und eben auf Leerzeichen eingestellt haben. Oder es gibt eine weitere Funktion, die ich übersehen habe.
Bis nach rechts kommen? Du rückst deinen Code händisch ein? Ist das nicht viel zu mühselig? Bei mir ist die Tab-Taste übrigens auf die Indent-Funktion gesetzt. Die rückt den Code für mich automatisch ein (wobei auch nach ;{} etc. automatisch eingerückt wird).
-
pumuckl schrieb:
Bashar schrieb:
Und wie entsteht so eine Adresse? Siehe Ursprungsposting. Ersetze SomeObject durch Address und den ganzen Rest sinngemäß.
[...]sondern so:
Adresse a("Bahnhofstr.", 11 /*hausNr*/, 25469 /*PLZ*/, "Halstenbek", "EG links"); Person p("Manuela", "Mustermann", 38, a); /* ... */Die Adresse hat 5 Parameter, worauf willst du eigentlich hinaus? Davon abgesehen: Wenn du das in einem Rutsch konstruieren willst, sieht es so aus:
persons.push_back(Person("Manuela", "Mustermann", 38, Adresse("Bahnhofstr.", 11 /*hausNr*/, 25469 /*PLZ*/, "Halstenbek", "EG links")));Die Daten sind da, sie müssen von A nach B geschoben werden. Du kannst das einschachteln wie du willst, davon verschwindet das Problem nicht.
-
Wenn ich das so mache wie z.B. auch seldon das in seinem Code hatte, muss ich in Zeile 2 natürlich irgendwie dahin kommen. Das meiste wird automatisch eingerückt, klar.
-
@otze: Niemand hält sich an diese Konvention, daher ist es besser, Tabs im Text zu vermeiden.
-
Bashar schrieb:
worauf willst du eigentlich hinaus?
Darauf, dass man solche Monster wie das gezeigte tunlichst vermeiden sollte, der Leserlichkeit wegen. Und darauf, dass man im Idealfall eben nicht 5 oder mehr Parameter übergeben müssen sollte sondern solche Monstren sinnvolle in mehrere Zeilen aufteilt.