Hallo,
kurze Frage, wie positioniert man in Programmiersprachen wie C und C++
üblicherweise die geschweiften Klammern?
Ist es üblich, diese Klammern unter den ersten Buchstaben des Befehls zu
setzen, zu dem sie gehören und wie weit rückt man "Unterbefehle"
üblicherweise ein?
Steffen schrieb:> kurze Frage, wie positioniert man in Programmiersprachen wie C und C++> üblicherweise die geschweiften Klammern?
Die Frage ist ungefähr genauso unbelastet wie die, ob man ein gekochtes
Ei jetzt an der spitzen oder stumpfen Seite aufschlägt...
Ich hol jedenfalls schon mal Popcorn ;)
Suchbegriff "Code Convention" -- da gibt es etliche Varianten.
Es gibt beides:
Sowohl am Ende der vorhergehenden Zeile als auch (eingerückt) in einer
eigenen.
Einrückungstiefe ist ebenfalls variantenreich, häufig 4 oder 8 Zeichen
ODER ein Tab.
Bietet viel Flamewar-Potential.
Achim H. schrieb:> Einrückungstiefe ist ebenfalls variantenreich, häufig 4 oder 8 Zeichen> ODER ein Tab.
UND wäre doch auch mal interessant. :-D
Früher habe ich die offnende Klammer hinter den Ausdruck gesetzt, im
professionellen Bereich habe ich aber sehr viel öfter (oder sogar
ausschließlich?) die Klammer unter dem Ausdruck gesehen.
Eine IDE, ich weiß gerade nicht ob Visual Studio oder Eclipse, setzt
wiederum die Klammer in die gleiche Zeile.
Also wenn ich jemandem eine Empfehlung geben sollte, würde ich für die
öffnende Klammer eine eigene Zeile empfehlen, weil das meiner Meinung
nach weiter verbreitet ist. Allerdings gewöhnt man sich auch schnell um.
Spart Platz in der Höhe, ohne zu viele Kompromisse in der Deutlichkeit.
Aber meine (zugegeben Java-baiserte) IDE zeigt mir bei
Mehr-Zeilen-Anweisungen auch einen waagerechten Strich in der ersten
Spalte an, dass es sich a) um eine solche handelt, und b) in welcher
Einrückungstiefe diese beginnt.
Das wird vor allem dann interessant, wenn sowohl der Test-Ausdruck als
auch der Anweisungsblock einer IF-Verzweigung mehrzeilig werden.
Die IDE-Unterstützung in der Darstellung sollte die Entscheidung
beeinflussen.
Steffen schrieb:> Ist es üblich,
Üblich leider nicht, manch 'automatisches formatieren' macht es anders,
aber ich finde es so am übersichtlichsten und mache das so.
Achim H. schrieb:> Einrückungstiefe ist ebenfalls variantenreich, häufig 4 oder 8 Zeichen> ODER ein Tab.
zumal das oft nur zusammen bzw. mit weiteren Konventionen Sinn macht.
Viele Köche verderben den Brei. Wenn einer die Klammersetzung, der
andere Tab/Leerzeichen, der Dritte die Einrücktiefe entscheidet, dann
passt es selten. Gleiches gilt für
* mehrfache return / goto zum Funktionsende
* Kommentare
* Zeilenlänge
* Funktionsgröße
Wer Zeilen sparen will/muss, hat mehr Sympathie für manche Arten wie
andere. Wer 4-5 Einrückungen gewohnt ist, empfindet tab/8 als idiotisch.
(@TO: Dein Stil ist selten: Mal eingerückt (while) Mal nicht (b) )
ich mach immer so:
if a>100 {
}
Das spart einmal Enter drücken. :-)
und mit tab einrückungen. Wer drückt da 4x Leerzeichen? Da muss man
schon ordentlich gestört sein
Dieter H. schrieb:> Das spart einmal Enter drücken. :-)> und mit tab einrückungen. Wer drückt da 4x Leerzeichen? Da muss man> schon ordentlich gestört sein
Einmal Enter drücken ist nicht soo viel Arbeit. Und die 4 Leerzeichen
macht die Autoformatierung -- und auch dann wenn man zunächst alles in
eine Zeile tippt.
Nikolaus S. schrieb:> Wenn man für andere programmiert muss man sich an deren Konventionen> halten.
Ein SW-Entwickler verlässt eher die Firma als eine geschweifte Klammer
anders zu setzen (Alte Weisheit aus Indien)
Achim H. schrieb:> Ich würde es so schreiben:> if (a == 1) {> while(b > 1000) {> b = b - 3;> }> }>> Spart Platz in der Höhe, ohne zu viele Kompromisse in der Deutlichkeit.
Ist weit verbreitet, aber ziemlich unleserlich. Der Grund dafür ist, daß
die Blockanfänge und -enden in verschiedenen Spalten stehen, was die
Leserlichkeit beeinträchtigt.
Ansonsten halte ich das für ne Geschmackssache. Mein Ding ist obiges
aber nicht, ich bevorzuge, die Blockanfänge und -enden in der gleichen
Spalte zu sehen und lediglich 2 LZ einzurücken. Eine Quelldatei soll ja
weder ein undurchdringlicher Dschungel noch ein zerrissener Fetzen sein.
Aber derartige Diskussionen hatten wir hier schon öfter. Da sind einige
Leute geradezu militant geworden.
W.S.
Formatierung, tja da gibt es ganz klare Standards.
So ca. 20 bis 30. Können auch fünfzig sein.
Ich schreibe im Allgemeinen meinen Code so wie ich es mag und lasse mir
für die spätere Übergabe schon mal vorab die erwünschte ›astyle‹
Konfiguration geben.
Da wird das Zeug einmal durch gejagt und zwei Sekunden später passt es
auch für die - gefühlt - hirnrissigsten Konventionen. Und davon habe ich
leider schon einige sehen und ertragen müssen.
Ach ja, weil's gerade so schön passt ein kleiner Seitenhieb in Richtung
Anti-Python-Taliban. Bei Python gibt's solche Probleme kaum. Vermutlich
weil eh alle mit PyCharm arbeiten.
Wenn du nur für dich selber programmierst, kannst du den Stil verwenden,
der die persönlich am besten gefällt. Wichtiger als das konkrete
Formatierungsstil ist, dass du (zumindest innerhalb einer Quelldatei)
konsequent immer beim selben Stil bleibst.
Wenn du in einer Gruppe mit anderen zusammenarbeitest, ist es ratsam,
sich auf einen gemeinsamen Stil zu einigen, an den sich jeder hält.
Wenn du in mehreren Gruppen arbeitest, solltest du dich an den in der
jeweiligen Gruppe vorherrschenden Stil halten.
Falls es dir schwer fällt, zwischen verschiedenen Stilen zu wechseln,
dann schreibe den Code in deinem persönlichen Stil und formatiere ihn
mit einem entsprechenden Tool in den Stil der anderen um. Man kann das
automatisieren, indem man den Editor immer beim Laden und Speichern
einer Datei das Formatierungstool mit der jeweils gewünschten
Konfiguration aufrufen lässt.
Ein sehr mächtiges Formatierungstool ist bspw. clang-format. Damit
lassen sich nicht nur die Einrückungen, sondern auch viele andere Dinge
wie bspw. Umbrüche langer Zeilen und Leerzeichen innerhalb einer Zeile
sehr flexibel konfigurieren.
Clang-format bringt ein paar vordefinierte Stile mit, nämlich die von
LLVM, GNU, Google, Chromium, Microsoft, Mozilla und WebKit. Wenn du
einen davon als deinen persönlich Stil (oder zumindest als Basis dafür)
auswählst, machst du sicher nicht viel falsch.
Also, mich um die Formatierung zu kümmern, das habe ich schon vor ein
paar Jahren aufgehört.
Für die Formatierung gibt es Programme, bzw. Editoren, die das
übernehmen. Ich schreibe den Code einfach nur noch hin, z.B. in einer
Zeile, drücke Strg-S, und der Editor formatiert den Kram bevor er ihn
speichert.
Und ja, ich habe auch Tabnine installiert. Aber das ist ja für die
meisten hier der pure Teufel...
Gerald K. schrieb:> Der JFE Programmeditor erlaubt ein nachträgliches Formatieren von> C/C++> Code.
Jeder anständige Editor, der den Namen verdient, kann das.
Dann gibt es dazu noch externe Tools, die sich auch in Editoren
einbinden lassen. AStyle, clangformat, usw. Nennen sich Code Beautifier,
Google weiß Bescheid.
Oliver
Wühlhase schrieb:> Ansonsten lobe ich mir automatische Stilanpassung...ein gemeinsamer> einheitlicher Codestil muß und sollte heute nicht mehr sein, finde ich.
So kann man leicht feststellen wer der Author des Programmes war.
Dussel schrieb:> Achim H. schrieb:>> Einrückungstiefe ist ebenfalls variantenreich, häufig 4 oder 8 Zeichen>> ODER ein Tab.> UND wäre doch auch mal interessant. :-D
Gibt es. Eine der dämlichsten Einrückungsvarianten, die ich bisher
gesehen habe, benutzt für eine Einrückungsebene vier Spaces, für zwei
Ebenen ein Tab, für drei ein Tab und vier Spaces, u.s.w.
Und die ist gar nicht mal so selten. Das sieht dann ganz besonders toll
aus, wenn man seine Tab-Weite auf 4 oder gar auf 2 gestellt hat.
Dieter H. schrieb:> und mit tab einrückungen. Wer drückt da 4x Leerzeichen? Da muss man> schon ordentlich gestört sein
Mit tab ist hier nicht die Taste, sondern das Steuerzeichen im Code
gemeint. Man drückt die Tab-Taste, und der Editor fügt z.B. 4 Spaces
ein.
W.S. schrieb:> Ansonsten halte ich das für ne Geschmackssache. Mein Ding ist obiges> aber nicht, ich bevorzuge, die Blockanfänge und -enden in der gleichen> Spalte zu sehen
Das empfinde ich genauso. Vielleicht liegt es auch an einem gewissen
Bedürfnis für Symmetrie. Die öffnende und schließende Klammer müssen für
mich einfach beide in der selben Spalte stehen und eine eigene Zeile
haben, sonst wirkt das irgendwie unaufgeräumt.
> und lediglich 2 LZ einzurücken.
Ich hab in den vielen Jahren, seit ich programmiere, verschiedene
Einrückungstiefen ausprobiert. Mir persönlich waren 8 zu viel und 2 zu
wenig, und so bin ich bei 4 gelandet und geblieben. Ich hab auch schon
Code gesehen, der eine Tiefe von 3 verwendet, aber irgendwie wirkt das
auf mich unnatürlich. Ich weiß aber nicht, wieso, denn warum muss die
Einrückungstiefe zwingend eine Zweierpotenz sein?
> Eine Quelldatei soll ja weder ein undurchdringlicher Dschungel noch ein> zerrissener Fetzen sein.
Wenn du bei einer Tiefe von 4 nur noch einen "zerrissenen Fetzen" hast,
dann ist dein Code zu verschachtelt.
Das andere Extrem findet man übrigens im Linux-Kernel. Einrückungstiefe
8 gilt als Naturgesetz (*), und Zeilenlänge ist auf 80 zu beschränken.
Da geht einem ziemlich schnell der Platz aus.
* und das meine ich wörtlich. Aus dem offiziellen Coding-Style-Dokument:
"Tabs are 8 characters, and thus indentations are also 8 characters.
There are heretic movements that try to make indentations 4 (or even 2!)
characters deep, and that is akin to trying to define the value of PI to
be 3."
Justin S. schrieb:> Ich würde es so schreiben (weil geschweifte Klammern bei nur einer> Instruktion in C überflüssig sind):>
1
if(a==1)
2
>while(b>1000)
3
>b-=3;
Vielleicht solltest du noch eine Information zur Relevanz hinzufügen.
Besonders im Hinblick auf den Thread-Titel und die ursprüngliche Frage.
Hab' dir schon mal ein Epsilon rausgesucht: ε
Justin S. schrieb:> Ich würde es so schreiben (weil geschweifte Klammern bei nur einer> Instruktion in C überflüssig sind):
Linefeed ist auch nicht nötig und wird völlig überbewertet.
Justin S. schrieb:> Ich würde es so schreiben (weil geschweifte Klammern bei nur einer> Instruktion in C überflüssig sind):
1
if (a == 1)
2
while (b > 1000)
3
b -= 3;
Genau das würde ich nicht machen. Bzw. höchstens dann, wenn nur ein
einziger, einfacher Befehl im if-Block steht.
Es ist einfach zu fehleranfällig wenn nachträglich ein Befehl
hinzugefügt werden muss.
Ob die öffnende Klammer eine neue Zeile bekommt finde ich egal. Wichtig
ist mir, dass die Schließende in der selben Spalte steht wie der Befehl,
zu dem der Block gehört. Dann kann man leicht erkennen wo ein Block
anfängt & wie weit er geht.
Explizit abraten würde ich von Folgendem (Wikipedia nennt das den
Whitesmith-Stil):
1
if (a == 1)
2
{
3
while(b > 1000)
4
{
5
b = b - 3
6
}
7
}
Da ist nicht auf einen Blick erkennbar wo der dazugehörige Blockanfang
zu einer schließenden Klammer ist.
Tilo R. schrieb:> Explizit abraten würde ich von Folgendem (Wikipedia nennt das den> Whitesmith-Stil)
Das ist doch python ;-) Nur ohne geschweiften Klammern.
Tilo R. schrieb:> Justin S. schrieb:>> Ich würde es so schreiben (weil geschweifte Klammern bei nur einer>> Instruktion in C überflüssig sind):>> if (a == 1)>> while (b > 1000)>> b -= 3;> Genau das würde ich nicht machen. Bzw. höchstens dann, wenn nur ein> einziger, einfacher Befehl im if-Block steht.> Es ist einfach zu fehleranfällig wenn nachträglich ein Befehl> hinzugefügt werden muss.
Aber eben nur dann, wenn die öffnende Klammer keine eigene Zeile
bekommt.
1
if(a==1&&(x+y)*3==z){
2
irgendwas();
ist halt schwerer von
1
if(a==1&&(x+y)*3==z)
2
irgendwas();
zu unterscheiden als
1
if(a==1&&(x+y)*3==z)
2
{
3
irgendwas();
Abgesehen davon wird mein Editor zickig, wenn ich ohne Klammern dem if
eine Zeile anfüge, weil er anders einrücken will und ich mich explizit
darüber hinwegsetzen müsste. Und zusätzlich warnt mich dann auch noch
gcc, wenn das "seltsam" eingerückt ist. Von daher sehe ich da eher
weniger die Gefahr, da einen Fehler zu machen.
Rolf M. schrieb:> Dussel schrieb:>> Achim H. schrieb:>>> Einrückungstiefe ist ebenfalls variantenreich, häufig 4 oder 8 Zeichen>>> ODER ein Tab.>> UND wäre doch auch mal interessant. :-D>> Gibt es. Eine der dämlichsten Einrückungsvarianten, die ich bisher> gesehen habe, benutzt für eine Einrückungsebene vier Spaces, für zwei> Ebenen ein Tab, für drei ein Tab und vier Spaces, u.s.w.
Ich sage immer, wenn man es sich vorstellen kann und es nicht unmöglich
ist, gibt es jemanden, der es macht oder gemacht hat.
Wenn man eine Einrückung von fünf Zeichen will, macht man halt einen Tab
und ein Leerzeichen pro Einrückungsebene. Aber bloß nicht ein
Leerzeichen und dann einen Tab. :-O
Tilo R. schrieb:> Genau das würde ich nicht machen. Bzw. höchstens dann, wenn nur ein> einziger, einfacher Befehl im if-Block steht.> Es ist einfach zu fehleranfällig wenn nachträglich ein Befehl> hinzugefügt werden muss.
richtig, es gibt auch style guides die das explizit verbieten und das
würde dann nicht durch einen CI Test gehen.
Noch fieser ist es nämlich wenn dem if ein Makro folgt das z.B. als
debug print eine Funktion ausführt oder durch nichts ersetzt wird. Dann
ändert sich der Programfluss komplett durch ein anderes define.
Früher habe ich auch die Version mit Klammer in eigener Zeile benutzt,
das wurde gemeinsam abgestimmt und das Argument war das man die
Zugehörigkeit besser sieht. Heute sehe ich in den meisten Projekten mehr
die sparsame Version, die Editoren stellen den Code viel übersichtlicher
dar als früher. Im Anhang ein Beispiel mit VSC, die Option mit den
Linien kam erst kürzlich dazu.
Dussel schrieb:> Wenn man eine Einrückung von fünf Zeichen will, macht man halt einen Tab> und ein Leerzeichen pro Einrückungsebene. Aber bloß nicht ein> Leerzeichen und dann einen Tab. :-O
Naja, letzteres würde ja auch nicht funktionieren, da ein Tab ja nicht
einfach ein n Zeichen langes Leerzeichen ist, sondern vielmehr auf das
nächste Vielfache von n schiebt.
Johannes S. schrieb:> Noch fieser ist es nämlich wenn dem if ein Makro folgt das z.B. als> debug print eine Funktion ausführt oder durch nichts ersetzt wird. Dann> ändert sich der Programfluss komplett durch ein anderes define.
Solche Makros gehören aber auch verboten.
Mombert H. schrieb:> Rolf M. schrieb:>> if (a == 1 && (x + y)*3 == z)>> Sind die fehlenden Leerzeichen um das *-Zeichen Absicht?
Nein, hab nur schnell irgendwas dazu geschrieben, damit die Zeile länger
wird.
> Wenn ja, wie sieht die Regel dahinter aus?
Ohne die Klammern (also wenn nur y mit 3 multipliziert würde), würde ich
es tatsächlich so schreiben:
1
if(a==1&&x+y*3==z)
um damit zu betonen, dass sich die Multiplikation nur auf y bezieht.
Also ich mache es so wie von Kernighan und Ritchie in ihrem Buch
vorgemacht - mit dem "one true brace style". Stroustrop hält sich auch
daran - aus Respekt. Wäre ziemlich überheblich, zu denken, man könne das
besser.
c-hater schrieb:> Rolf M. schrieb:>> um damit zu betonen, dass sich die Multiplikation nur auf y bezieht.>> Ist das für Mathematiklegastheniker?
Nein, nur damit man es schneller erfasst, genau wie bei der Einrückung.
Und damit man sieht, dass das Absicht war und nicht einfach ein Paar
Klammern vergessen wurde.
Wenn der auszuführende Block ganz einfach ist, dann schreibe ich ihn
direkt hinter der Bedingung.
Einrückung immer nur 3 Zeichen, sonst läßt sich bei höherer
Schachtelungstiefe kaum noch etwas erkennen.
Die Klammer für das Blockende steht in der gleichen Einrückungstiefes
des Blockes, so wird der Lesefluß weniger gestört.
Als die Rechner noch wenig Speicher hatten, haben wir die
BASIC-Programme immer durch den "REM-Space-Killer" gejagt, der alle
Kommentare und alle unnötigen Whitespaces entfernt hat. Dann 'mal viel
Spaß bei der Wartung...
Rolf M. schrieb:> * und das meine ich wörtlich. Aus dem offiziellen Coding-Style-Dokument:> "Tabs are 8 characters, and thus indentations are also 8 characters.> There are heretic movements that try to make indentations 4 (or even 2!)> characters deep, and that is akin to trying to define the value of PI to> be 3."
Eigentlich ganz vernünftig...finde ich. So wird man zu sehr sauberem und
gut lesbarem Code geradezu gezwungen.
Das erfordert kurze, knackige Bezeichner, macht querformatfüllende
Einrückorgien unmöglich, und erfordert eine Vereinfachung von
komplexeren Codefragmenten geradezu.
Sehr clever.
++C schrieb:> Wäre ziemlich überheblich, zu denken, man könne das besser.
Meinst du, jemand denkt tatsächlich daß er es besser macht? Oder nicht
doch einfach nur anders?
Auch wenn ich diesen Stil in leichter Abwandlung (ich beginne nach }
normalerweise eine neue Zeile) ebenfalls benutze.
Aber wie gesagt - ich finde sowieso, daß Fragen wie Einrückstile
zumindest heute keineswegs einheitlich sein sollten.
Gerald K. schrieb:> Wühlhase schrieb:>> Ansonsten lobe ich mir automatische Stilanpassung...ein gemeinsamer>> einheitlicher Codestil muß und sollte heute nicht mehr sein, finde ich.>> So kann man leicht feststellen wer der Author des Programmes war.
Sowas hat gefälligst im Log des VCS zu stehen. Und vielleicht noch einem
Codekommentar.
Den Autor über den Einrückstil zu identifizieren, ach du Scheiße...und
für verschiedene Versionsstände dann durchnummerierte Ordner?
Rolf M. schrieb:> c-hater schrieb:>> Rolf M. schrieb:>>> um damit zu betonen, dass sich die Multiplikation nur auf y bezieht.>>>> Ist das für Mathematiklegastheniker?>> Nein, nur damit man es schneller erfasst,
Schnelles Erfassen spielt bei C-Hassern und Assemblerfänbois keine
Rolle. ;-)
Jemand schrieb:> In der Praxis bekomme ich somit oft aussagelose Schrottbezeichner
Wer wegen der Länge von Bezeichnern die Zeilenlänge begrenzt oder die
Tabweite verringert, hat die Kontrolle über sein Leben verloren.
Lange Zeilen entstehen nicht durch lange Bezeichner, sondern durch
endlose Schachtelungen.
c-hater schrieb:> Wer wegen der Länge von Bezeichnern die Zeilenlänge begrenzt oder die> Tabweite verringert, hat die Kontrolle über sein Leben verloren.
genau. Help1234 und Temp5678 erlauben schon allein 20.000 sprechende
Bezeichner mit nur 8 Zeichen. Und mit h, hlp, Hlp und help und
entsprechenden temp-Variationen sind es schon 100.000. Das sollte
ausreichen.
Nur_ein_Typ schrieb:> Rolf M. schrieb:>> c-hater schrieb:>>> Rolf M. schrieb:>>>> um damit zu betonen, dass sich die Multiplikation nur auf y bezieht.>>>>>> Ist das für Mathematiklegastheniker?>>>> Nein, nur damit man es schneller erfasst,>> Schnelles Erfassen spielt bei C-Hassern und Assemblerfänbois keine> Rolle. ;-)
Bei mir würde diese Leerzeichen-Praxis eher das Gegenteil bewirken und
von den wichtigen Dingen ablenken. Ohne einen Kommentar, weiß man eh
nicht was diese Ausnahme-Leerzeichen bedeuten sollen. Mal davon
abgesehen, dass die Leerzeichen (fehlend oder überflüssig) die
automatische Formatierung beim commit eh nicht überleben würden.
c-hater schrieb:> Jemand schrieb:>> In der Praxis bekomme ich somit oft aussagelose Schrottbezeichner>> Wer wegen der Länge von Bezeichnern die Zeilenlänge begrenzt oder die> Tabweite verringert, hat die Kontrolle über sein Leben verloren.>> Lange Zeilen entstehen nicht durch lange Bezeichner, sondern durch> endlose Schachtelungen.
Was bezeichnest du als "lange Bezeichner" und was als "endlose
Schachtelungen"?
A. S. schrieb:> Help1234 und Temp5678 erlauben schon allein 20.000 sprechende> Bezeichner mit nur 8 Zeichen. Und mit h, hlp, Hlp und help und> entsprechenden temp-Variationen sind es schon 100.000. Das sollte> ausreichen.
8 Zeichen? Bist du wahnsinnig? 6 ist das absolute Maximum! Wie soll man
sonst mit Fortran77 kompatibel sein?
A. S. schrieb:> c-hater schrieb:>> Wer wegen der Länge von Bezeichnern die Zeilenlänge begrenzt oder die>> Tabweite verringert, hat die Kontrolle über sein Leben verloren.>> genau. Help1234 und Temp5678 erlauben schon allein 20.000 sprechende> Bezeichner mit nur 8 Zeichen. Und mit h, hlp, Hlp und help und> entsprechenden temp-Variationen sind es schon 100.000. Das sollte> ausreichen.
Hast du den zitierten Text überhaupt gelesen?
Ich habe genau das Gegenteil gesagt. Ich bin für lange Bezeichner.
Also ich bin ja lieber für eindeutige, aussagekräftige Bezeichner. Lang
müssen die dazu nicht unbedingt sein (auch wenn es sich manchmal nur
schwer vermeiden läßt).
>>> Ich würde es so schreiben (weil geschweifte Klammern bei nur einer> Instruktion in C überflüssig sind):>
1
>if(a==1)
2
>while(b>1000)
3
>b-=3;
4
>
@Steffen
Ich schreibe so wie Du in Deinem Beispiel. Das war mir in den
Anfangsjahren noch zu "uncool" irgendwie, da hätte ich das eher noch wie
Justin gemacht oder auch wie das (nicht zitierte Beispiel) in nur einer
Zeile, mit der Zeit habe ich aber gelernt, dass es Vorteile hat,
geschweiften Klammern eigene Zeilen und korrespondierende Spalten zu
gönnen.
Ist natürlich Geschmackssache, kann jeder halten wie er will - aber
jeder kann den Stil im ersten Beispiel gut lesen, man gewöhnt sich sehr
schnell daran.
Bei fremden Programmen ist mir der Format-Stil eher egal, aber mir ist
es dann lieber wenn er konsequent durchgezogen wurde.
Rolf M. schrieb:> Aus dem offiziellen Coding-Style-Dokument:
Naja, Linuxer waren und sind ganz offentlich inherent militant.
Heutzutage dient der Tabulator nur noch dem Zweck, den der Name
suggeriert: der Tabulation. Und ob das nun bei äquidistantem Font genau
8 Zeichen sind oder bei anderen Fonts eben eine nicht auf ganzzahlige
Zeichenbreiten abbildbaren Abstand, ist eigentlich egal. Tabulation
schafft "mechanisch" richtige Abstände ohne Bezug auf Zeichenanzahl, die
dort hineinpaßt. Die Zeichenanzahl von 8 stammt letztlich vom Teletype
und war von Anfang an nur ein Kompromiß. Linuxer sind daher eben auch
rückständig.
W.S.
A. S. schrieb:> Help1234 und Temp5678 erlauben schon allein 20.000 sprechende> Bezeichner mit nur 8 Zeichen.
Naja, und so lesen sich dann Quelldateien mit derartigen Bezeichnern
auch. Von wegen 'sprechend'. Ich kann mich noch an meine
Programmieranfänge erinnern, wo die Länge von Bezeichnern auf 4 Zeichen
begrenzt war. Wehe, wenn man dort keine ordentlichen Kommentare beigefüg
hatte. Ja, das waren eben die Begrenzungen bei Systemen, die mit
Lochband und 32K Hauptspeicher gesegnet waren. Aber solche labernden
(anstatt sprechenden) Bezeichner wie Help1234 sind keinen Deut
nützlicher.
W.S.
Frank E. schrieb:> Ich empfehle dazu das Buch "Clean Code" von Robert C. Martin.
Ich würde es – im Kontext dieses Threads (es geht um C und C++), aber
auch generell – nur eingeschränkt empfehlen. Ich habe es gelesen und war
schon nach den ersten 10 Prozent etwas enttäuscht, was sich auch danach
eher noch verschlimmerte.
Zum einen gefällt mir der Schreibstil des Autors nicht, weswegen das
Lesen – unabhängig vom Inhalt – einfach nicht viel Spaß gemacht hat.
Diese Rezension, die ich leider erst gelesen habe, nachdem ich das Buch
schon gekauft hatte, trifft es IMHO genau auf den Punkt:
https://www.amazon.de/gp/customer-reviews/R2L28ZEJ72KL0Q/ref=cm_cr_dp_d_rvw_ttl?ie=UTF8&ASIN=3826655486
Zum anderen ist das Buch ziemlich Java-lastig, ohne dass dies aus dem
Titel oder der Zusammenfassung auf der Rückseite hervorgeht. Zwar war
mir das bereits vorher bekannt, und natürlich lässt sich bzgl. des
Programmierstils vieles von Java nach C++ übertragen, aber am Ende
stellte sich heraus, dass etwa ein Drittel des Inhalts Java-spezifisch
und deswegen für C++-Programmierer kaum von Interesse ist. Auf der
anderen Seite gibt es sehr viele C++-spezifische Dinge, die in dem Buch
nicht behandelt werden, über die ich aber ebenfalls gerne etwas erfahren
hätte.
Ohne es vollständig gelesen zu haben, erscheint mir "Clean C++20" von
Stephan Roth für C++-Programmierer die deutlich bessere Wahl zu sein. Es
orientiert sich vom Aufbau her an "Clean Code" von Robert C. Martin und
verweist auch mehrfach auf dieses Buch, um herauszustellen, inwiefern
die dort genannten Regeln in C++ anders anzuwenden sind als in Java. Und
natürlich werden – dem Titel entsprechend – sehr viele C++-spezifische
Dinge angesprochen, zu denen es in Java keinen Gegenpart gibt.
Wenn ich meinen derzeitigen Stack von 1,7 Büchern abgearbeitet habe,
werde ich mir wahrscheinlich dieses Buch von Stephan Roth zulegen.
A. S. schrieb:> Ein SW-Entwickler verlässt eher die Firma als eine geschweifte Klammer> anders zu setzen (Alte Weisheit aus Indien)
Bleibt die Frage, ob es alte_weisheit_aus_indien oder
alteWeisheitAusIndien heißt! ^^
Yalu X. schrieb:> Zum einen gefällt mir der Schreibstil des Autors nicht, weswegen das> Lesen – unabhängig vom Inhalt – einfach nicht viel Spaß gemacht hat.> Diese Rezension, die ich leider erst gelesen habe, nachdem ich das Buch> schon gekauft hatte, trifft es IMHO genau auf den Punkt:>> https://www.amazon.de/gp/customer-reviews/R2L28ZEJ72KL0Q/ref=cm_cr_dp_d_rvw_ttl?ie=UTF8&ASIN=3826655486Yalu X. schrieb:> Frank E. schrieb:>> Ich empfehle dazu das Buch "Clean Code" von Robert C. Martin.>> Ich würde es – im Kontext dieses Threads (es geht um C und C++), aber> auch generell – nur eingeschränkt empfehlen.> Zum einen gefällt mir der Schreibstil des Autors nicht, weswegen das> Lesen – unabhängig vom Inhalt – einfach nicht viel Spaß gemacht hat.
Ich zitiere mal aus der Rezension:
> Trotzdem ist es sehr dogmatisch geschrieben, lässt wenig Raum> für Diskussionen, und ist vor allem gegenüber den Codebeispielen> herablassend
Genau DAS ist die Intention von Martin: am besten GAR KEINEN Raum für
Diskussionen zu lassen, DARUM schreibt er so, wie er schreibt.
Mal ab davon, dass nach der GOF Fowler und Martin die ersten waren, die
den Leuten mit ihrem Pippi-Langstrumpf-Code-Stil den Kopf gewaschen und
klare Prinzipien eingeführt haben, würde ich persönlich jedem klugen,
sachlichen Argument zur Code-Formatierung (von Architektur gar nicht zu
reden) zustimmen, wenn es sachlich begründet ist. Gibt es aber nicht.
Genauso wenig wie die alte Curly- vs. Whitespace Debatte uns auch bis
nach dem Ausstieg aus der Kernenergie erhalten bleiben wird.
Was Martin eigentlich macht, ist das hier hinzuschreiben: "Lies meinen
Kram, denk drüber nach, verstehe es, und wenn du dann anderer Meinung
bist, okay, mach es besser!" Es ist ja auch nicht so, dass Martin und
viele andere seiner Zeit und Zunft nicht später eigene Meinungen
korrigiert oder verfeinert hätten.
Der Haken ist das mit dem Verstehen. Es gibt zu viele Coder, die das
beibehalten, was sie einst, wo alles schön war, gelernt haben, oder die
das beibehalten, was sie einst hübsch fanden, ohne über Sinn und Zweck
von Regeln nachzudenken, oder die einfach der Meinung sind (sieht man
heutzutage ja auch in vielen anderen Bereichen), dass Regeln, ohne ihre
Absichten selbst zu verstehen, einfach scheiße sind.
Vernünftig durchdachte Coding Conventions haben eine einzige Regel:
Schreibe Code so, dass er trotz der Unzulänglichkeiten der jeweiligen
Programmiersprache mit so wenigen Kommentaren wie möglich auch von
deinem Nachfolger im Job verstanden wird.
Das ist eigentlich alles, was es meiner Meinung dazu zu sagen gibt.
Der Unterschied ist genau ein Leerzeichen, nämlich das zwischen while
und der runden Klammer auf. Ich halte es so: Funktionen- und
Methodenaufrufe kriegen ihre runde Klammer wie eine mathematische
Funktion direkt nach ihrem Namen; und alles, was Blöcke enthalten kann
im klassischen Sinne (also keine Lambdas und so) bekommt ein
Leerzeichen. "Curly-auf-und-Curly-Sue" möchte ich vertikal auf einer
Höhe sehen. Ich mag vertikal luftigen Code, er gliedert Gedanken. Alles,
was Curlys (also Blöcke) enthalten kann, kriegt Curlys. Ausnahmen sind
hier lange Zuweisungsentscheidungen der Sorte
1
if(a<1&&b<1&&c>0)value=a+b;else{
2
if(a==1&&c==0)value=2;else{
3
if(b>0&&c==1)value=3*b;
4
else/* none of the above */value=4711;}}
Blödsinniges Beispiel, aber zum Prinzip.
Jedenfalls, wenn solche hässlichen Entscheidungen tabellarisch
übersichtlicher sind, bevorzuge ich sowas. Aber das ist ja wiederum eine
meiner (persönlichen) Meinungen zu Programmiersprachen: Sie sollten so
weit wie möglich unsichtbar sein und die Problemstellung in den
Vordergrund stellen, und sie sollten je nach Problemstellung flexibel in
der Formatierung sein.
Python-Fans werden mir sogleich vehement widersprechen ^^
Carsten P. schrieb:> Mal ab davon, dass nach der GOF Fowler und Martin die ersten waren, die> den Leuten mit ihrem Pippi-Langstrumpf-Code-Stil den Kopf gewaschen und> klare Prinzipien eingeführt haben, würde ich persönlich jedem klugen,> sachlichen Argument zur Code-Formatierung (von Architektur gar nicht zu> reden) zustimmen, wenn es sachlich begründet ist. Gibt es aber nicht.
Es gab schon vor Martin Bücher, die sich damit befasst haben und
durchaus verschiedene Sichtweisen beleuchtet und begründet haben. Code
Complete z.B.. Und davor gab es gar wirkliche Untersuchungen, die jedoch
heute kaum noch Aussagekraft haben.
> Es leckt aus jedem Satz heraus: "Ich Gott, du Nichts."
2
>
Und du so "Du hast doch keine Ahnung!"?
Und wenn er zehnmal ein Arsch ist, hat er in fast allen Dingen Recht.
Weil er zwar kein Gott ist, aber weiß, was er sagt, und wieso er es
sagt. Und wenn ein paar mehr zwischen der Person und den Aussagen
unterscheiden könnten, wäre das ein Fortschritt. Wenn dir das persönlich
nahe geht, tut es mir leid.
Ralf Westphal (also das deutsche Pendant zu Martin und Fowler) ist auch
nicht mein bester persönlicher Freund (ja, wir kennen uns), trotzdem
halte ich mich mit ganz brauchbarem Erfolg an viele seiner Ideen und
Regeln.
Man muss halt insbesondere beruflich mal zwischen dem Bauern und seinen
Kartoffeln unterscheiden können.
Carsten P. schrieb:> Man muss halt insbesondere beruflich mal zwischen dem Bauern und seinen> Kartoffeln unterscheiden können.
Warum? Wenn ich den Bauern nicht mag, gehe ich wo anders Kartoffeln
kaufen.
Nichts, von dem was ich bisher aus seiner Hand gelesen oder aus seinem
Mund gehört habe, war weltbewegend, neu oder einzigartig. Es gibt
genügend gute Bücher zu dem Thema, die zusätzlich noch Spaß beim Lesen
machen. Warum sollte ich was von ihm lesen?
Mombert H. schrieb:> Warum?
Stimmt, müssen musst du gar nichts außer irgendwann sterben und
zwischendurch auf Klo (liebster Spruch einer meiner besten Freundinnen)
Mombert H. schrieb:> Nichts, von dem was ich bisher aus seiner Hand gelesen oder aus seinem> Mund gehört habe, war weltbewegend, neu oder einzigartig.
Das ist das Schöne an Meinungen: jeder darf welche haben. Welche richtig
oder falsch, brauchbar oder schrottig sind, entscheidet der Markt.
Früher oder später.
Drum das mit dem Bauern und den Kartoffeln: Ich persönlich entscheide
nach den Kartoffeln, nicht nach dem Bauern.
Carsten P. schrieb:> Mombert H. schrieb:>> Warum?>> Stimmt, müssen musst du gar nichts außer irgendwann sterben und> zwischendurch auf Klo (liebster Spruch einer meiner besten Freundinnen)
Vielen Dank für deine Meinung!
Mombert H. schrieb:> Vielen Dank für deine Meinung!
Entschuldige bitte. Das war ein wenig arg formuliert. Ich bin halt
ehrlich gesagt froh darüber, wenn Leute, mit denen zusammen ich was
coden soll, wenigstens ein paar der Standard-Werke gelesen haben, und
viele davon hören sich so an wie Martins Tiraden. Lies mal die
Original-Ausgabe von der GOF, oder lies manche Abhandlungen von Fowler.
Viel charmanter sind die auch nicht.
Richtig, das kann man ihnen vorwerfen: Keine Ahnung von Pädagogik. Aber
eigentlich sind wir doch alle alt genug, den Bauern von seinen
Kartoffeln zu unterscheiden, oder?
Du wählst doch, nehme ich mal an, ne Partei auch nicht danach, welcher
Vorsitzende den hübschesten Hintern oder welche Vorsitzende die netteste
Frisur hat. Und beruflich ist es dir wuppe, bei welcher Firma die
Hotline die säuselndste Stimme hat bei ner Reklamation.
Carsten P. schrieb:> Der Unterschied ist genau ein Leerzeichen, nämlich das zwischen while> und der runden Klammer auf. Ich halte es so: Funktionen- und> Methodenaufrufe kriegen ihre runde Klammer wie eine mathematische> Funktion direkt nach ihrem Namen; und alles, was Blöcke enthalten kann> im klassischen Sinne (also keine Lambdas und so) bekommt ein> Leerzeichen.
Interessant. Kann mir schon vorstellen, dass Du damit noch schneller in
eigenen Code wieder-eintauchen kannst nach längerer Zeit.
> "Curly-auf-und-Curly-Sue" möchte ich vertikal auf einer> Höhe sehen.> Ich mag vertikal luftigen Code, er gliedert Gedanken. Alles,
Schönes Statement, genau was ich sagen wollte. Daumen hoch.
> was Curlys (also Blöcke) enthalten kann, kriegt Curlys. Ausnahmen sind> hier lange Zuweisungsentscheidungen der Sorte>>
1
>if(a<1&&b<1&&c>0)value=a+b;else{
2
>if(a==1&&c==0)value=2;else{
3
>if(b>0&&c==1)value=3*b;
4
>else/* none of the above */value=4711;}}
5
>
>> Blödsinniges Beispiel, aber zum Prinzip.>> Jedenfalls, wenn solche hässlichen Entscheidungen tabellarisch> übersichtlicher sind, bevorzuge ich sowas. Aber das ist ja wiederum eine> meiner (persönlichen) Meinungen zu Programmiersprachen: Sie sollten so> weit wie möglich unsichtbar sein und die Problemstellung in den> Vordergrund stellen, und sie sollten je nach Problemstellung flexibel in> der Formatierung sein.
Stimmt, diesem Mittel habe ich mich auch schon bedient, aus den von Dir
genannten Gründen. Übrigens, sehr gute Darstellung des Prinzips, auch
mit dem In-Code-Kommentar.
> Python-Fans werden mir sogleich vehement widersprechen ^^
Das ist möglich - aber sinnlos ;)
Carsten P. schrieb:> würde ich persönlich jedem klugen,> sachlichen Argument zur Code-Formatierung (von Architektur gar nicht zu> reden) zustimmen, wenn es sachlich begründet ist. Gibt es aber nicht.Carsten P. schrieb:> Und wenn er zehnmal ein Arsch ist, hat er in fast allen Dingen Recht.
Wie du ja selber schreibts, gibt es keine sachlich begründeten Argumente
zur Code-Formatierung. Damit kann auch niemand in diesem Bereich Recht
haben oder falsch liegen, egal, was für ein arsch er auch ist.
Dir richtigen Coding-Conventions sind die, die der Auftraggeber
vorschreibt. Alles andere ist Mimimi - "ich finde blau aber schöner als
türkis".
Oliver
Meister E. schrieb:>> if ( a < 1 && b < 1 && c > 0 ) value = a + b; else {>> if ( a == 1 && c == 0 ) value = 2; else {>> if ( b > 0 && c == 1 ) value = 3 * b;>> else /* none of the above */ value = 4711; }}>>> Stimmt, diesem Mittel habe ich mich auch schon bedient, aus den von Dir> genannten Gründen. Übrigens, sehr gute Darstellung des Prinzips, auch> mit dem In-Code-Kommentar.
Sorry, aber die {} sind in dem Beispiel schon ziemlich ungewöhnlich.
Tabellarisch ja. Aber wenn, dann "else if" ohne. Und eher (wie Misra &
Co verlangen) um die value-Ausdrücke.
Leerzeichen um eng bindende Operatoren bei mehreren Ebenen ohne Klammer
sind auch nicht mein Fall, aber verm. Geschmacksache.
A. S. schrieb:>>> if ( a < 1 && b < 1 && c > 0 ) value = a + b; else {> Sorry, aber die {} sind in dem Beispiel schon ziemlich ungewöhnlich.
Richtig, weil ich sie quasi "aus der Sicht" haben will. Weil sie von der
eigentlichen Information, nämlich dem kruden Verknüpfen von Bedingungen,
ablenken. Das ist ja mein (persönliches) Credo, ich will nicht, dass die
Programmiersprache von Inhalt ablenkt. Wir schreiben keine Gedichte, wir
lösen Probleme von Kunden.
> Tabellarisch ja. Aber wenn, dann "else if" ohne. Und eher (wie Misra &> Co verlangen) um die value-Ausdrücke.>> Leerzeichen um eng bindende Operatoren bei mehreren Ebenen ohne Klammer> sind auch nicht mein Fall, aber verm. Geschmacksache.>
1
>if(a<1&&b<1&&c>0)value=a+b;
2
>elseif(a==1&&c==0)value=2;
3
>elseif(b>0&&c==1)value=3*b;
4
>elsevalue=4711;
5
>
Damit könnte ich auch gut leben, außer mit den fehlenden Leerzeichen
nach nach/vor den runden Klammern, die sind mir zu nah am eigentlichen
Inhalt und irritieren mich beim Lesen.
Je länger ich deine Lösung anschaue, desto besser gefällt mir, dass das
else vorne steht. Was mir gar nicht gefällt, ist das unrhythmische if
else if else if else. Neuer Vorschlag:
1
if(a<1&&b<1&&c<0)value=a+b;
2
else
3
if(a==1&&c==0)value=2;
4
else
5
if(b>0&&c==1)value=3*b;
6
else
7
/* none of the above match */value=4711;
Die Leerzeichen um die Operatoren sind Standard in C#, und sie isolieren
in meinen Augen die Variablen. Du kennst aus altem K&R-"C"-Code sicher
noch y=b>>--a==1?c++:d-a (fröhliches Operator-Rangfolge- und
Nebeneffekte-Raten ^^).
... mal ganz abgesehen davon, dass Variablen außer bei Lambdas und in
Interatoren und Indexern niemals a, b, c heißen und diese ganze
Konstruktion ein einziger "code smell" ist 8-O =D. Aber immerhin ist es
in allen drei (deinen und meinen) Versionen lesbarer, als wenn man
irgendwie versucht hätte, value aus a, b und c algebraisch zu berechnen.
Und sowas manchmal eben doch (gerade im Embedded) nicht zu vermeiden
ist, ohne den Code in seiner Semantik komplett zu zerreißen.
Aber dann bitte ganz tief in ner "EvaluateValue()"-Methode (oder so)
verstecken. Wenn ich sowas in nem öffentlichen Konstruktor sehe, krieg
ich Puls; und wenn es da keine 100%-ige test coverage gibt, ist das
eigentlich schon n Grund für ne Abmahnung ^^
Nur_ein_Typ schrieb:> Naja, wer so etwas schreibt:> [...]> sollte sich mit Belehrungsversuchen beim Codingstil lieber inh_ä_rent> zurückhalten.
Von dem UB reden wir lieber nicht ;-).
Carsten P. schrieb:> [...]
Wenn ich sowas sehe, versuchen meine Finger automatisch clang-format
aufzurufen, um etwas reguläres und konsistentes zu erhalten.
Mombert H. schrieb:> Wenn ich sowas sehe, versuchen meine Finger automatisch clang-format> aufzurufen, um etwas reguläres und konsistentes zu erhalten.
Kannst du gerne machen.
kleiner Admin schrieb:> Ich würde es so machen:> if (a == 1) {> while(b > 1000) { i++; b = b - 3;}> next;> }> next;
Mein Stil ist so ähnlich. Die öffnende Klammer gehört zur Bedingung, die
schließende zum Block. Der Wechsel der Einrückungstiefe korrespondiert
immer mit der Klammer als letztem Zeichen der vorherigen Zeile. Kompakt
und übersichtlich.
Nur finde ich, dass zwei Leerzeichen zum Einrücken ausreichen.
Meistens nehme ich auch nur zwei. ;-) Jedenfalls bei C, bei Pascal waren
es immer drei.
Bei den logischen Ausdrücken setze ich immer lieber mehr Klammern als zu
wenige, denn es gibt Compiler, die das sonst nicht auflösen können. Und
für das Kompilat macht es keinen Unterschied.
if ((a > b) && ((c == d) || (e != f)))
kleiner Admin schrieb:> denn es gibt Compiler, die das sonst nicht auflösen können.
Das Problem hast Du in C zum Glück nicht. Da gibt es Regeln, keine
Meinungen.
Dieter H. schrieb:> und mit tab einrückungen. Wer drückt da 4x Leerzeichen? Da muss man> schon ordentlich gestört sein
Deswegen nimmt man ja auch nur 2 Leerzeichen, so haben wir das im
Studium gelernt.
Tabs sind schlechter Programmierstil, auch das haben wir so im Studium
gelernt.
Wer also doch Tabs verwenden sollte um sich die Tipparbeit zu ersparen,
der sollte seinen Editor so einstellen, dass Tabs durch Leerzeichen
ersetzt werden. Als Gruppenarbeit ist das schon zwingend.
Ein absolutes NoGo sind Tabs zwischen den anderen Zeichen. Das zerreißt
komplett die Formatierung, wenn man das Dokument mal mit einem Editor
oder einer IDE öffnet, in der die TAB Breite anders eingestellt ist.
Das sollte man daher auf keinen Fall machen und wenn, dann sollte der
Editor das, wie schon gesagt, in Leerzeichen umwandeln.
Die Tabs am Zeilenanfang sind nicht all so kritisch, wenn sie überall am
Zeilenanfang verwendet werden. Schlechter Programmierstil sind sie aber
dennoch.
Deswegen haben in Code Tabs nichts zu suchen. Das ist die wichtigste
Regel von allen.
Wer es doch macht, hat einen schlechten Programmierstil.
Editoren bzw. IDEs mit automatischer Einrückung sparen einem zudem die
Tipparbeit. Daher ist das kein Argument keine Leerzeichen nutzen zu
wollen.
Wer nur 2 Leerzeichen benutzt kommt mit jedem Editor gut klar und muss
auch nicht viel tippen.
Die 2 Leerzeichen = guter Programmierstil stammen natürlich auch aus
einer Zeit, als die Zeichen noch auf 80 Zeichen pro Zeile in den
normalen Textmodi begrenzt war.
MaWin schrieb:> Nano schrieb:>> Tabs sind schlechter Programmierstil, auch das haben wir so im Studium>> gelernt.>> Dann muss es wohl stimmen.
Eben. So ist es. Also, nutzt keine Tabs.
Nano schrieb:> Deswegen nimmt man ja auch nur 2 Leerzeichen, so haben wir das im> Studium gelernt.
Genauso wie mehr als 80 Zeichen pro Zeile grundsätzlich ein no-go sind
und 1TBS/OTBS der einzig gute Stil ist.
> Editoren bzw. IDEs mit automatischer Einrückung sparen einem zudem die> Tipparbeit.
IDEs sind aufwändig und nur für wirklich grooooooße Projekte geeignet.
Für alles Andere gibt es Texteditoren!
Der Prof. bringt dir nicht alles bei und manche Dinge, wie Einrück- und
Klammerstile sind zum Teil individuelle Präferenz oder vmtl. didaktisch
besser geeignet.
Schau mal hier: https://en.wikipedia.org/wiki/Indentation_style
Im Zweifelsfall hilft zB.clang-format.
Norbert schrieb:> Ach ja, weil's gerade so schön passt ein kleiner Seitenhieb in Richtung> Anti-Python-Taliban.
;-)
> Bei Python gibt's solche Probleme kaum. Vermutlich> weil eh alle mit PyCharm arbeiten.
PyCharm sehe ich sehr, sehr selten. Früher meistens IPython oder
neuerdings Jupyter bzw. Jupyter Lab und bei den "richtigen Editoren und
IDEs" Atom, Sublime, VSCode, vi(m) und Emacs sehe ich hingegen oft --
jedenfalls im professionellen Umfeld.
Gerald K. schrieb:> Wühlhase schrieb:>> Ansonsten lobe ich mir automatische Stilanpassung...ein gemeinsamer>> einheitlicher Codestil muß und sollte heute nicht mehr sein, finde ich.>> So kann man leicht feststellen wer der Author des Programmes war.
{cvs, svn, git} annotate?
123 schrieb:> IDEs sind aufwändig und nur für wirklich grooooooße Projekte geeignet.> Für alles Andere gibt es Texteditoren!
Vorsicht, sowas sagt man nicht! Die IDE-Fans zerreißen Dich in der Luft!
123 schrieb:> Nano schrieb:>> Deswegen nimmt man ja auch nur 2 Leerzeichen, so haben wir das im>> Studium gelernt.>> Genauso wie mehr als 80 Zeichen pro Zeile grundsätzlich ein no-go sind> und 1TBS/OTBS der einzig gute Stil ist.
So, aber mit nur 2 Leerzeichen als Einrückung ist es richtig und den
benutze ich auch und allein der Name sagt es ja auch schon:
https://en.wikipedia.org/wiki/Indentation_style#Variant:_1TBS_(OTBS)
Wobei man sagen muss, dass die Einrückungstiefe vom Einrückungsstil erst
einmal unabhängig ist, deswegen werden da in der WP 4 Leerzeichen
benutzt um den Stil zu zeigen.
123 schrieb:> Nano schrieb:>> Editoren bzw. IDEs mit automatischer Einrückung sparen einem zudem die>> Tipparbeit.>> IDEs sind aufwändig und nur für wirklich grooooooße Projekte geeignet.> Für alles Andere gibt es Texteditoren!
Ich habe doch Editoren geschrieben.
Das "bzw." ist hier im Kontext als logisches "oder" zu verstehen.
> Der Prof. bringt dir nicht alles bei und manche Dinge, wie Einrück- und> Klammerstile sind zum Teil individuelle Präferenz oder vmtl. didaktisch> besser geeignet.
Ich weiß, es ging hier jetzt aber um die Einrücktiefe von 2 Leerzeichen
und die nicht Verwendung von Tabs.
> Schau mal hier: https://en.wikipedia.org/wiki/Indentation_style
Kenne ich.
> Im Zweifelsfall hilft zB.clang-format.
Kenne ich auch.
Gute IDEs bieten das von Haus aus.
Ein T. schrieb:> 123 schrieb:>> IDEs sind aufwändig und nur für wirklich grooooooße Projekte geeignet.>> Für alles Andere gibt es Texteditoren!>> Vorsicht, sowas sagt man nicht! Die IDE-Fans zerreißen Dich in der Luft!
Ich weiß, das habe auch nicht ich gesagt, sondern mein damaliger Prof
vor ein paar Jahren. Ich war damals schon lange ein IDE-Fan und
entsprechend entsetzt.
123 schrieb:> Ich weiß, das habe auch nicht ich gesagt, sondern mein damaliger Prof> vor ein paar Jahren. Ich war damals schon lange ein IDE-Fan und> entsprechend entsetzt.
Kluger Prof! ;-)
123 schrieb:> Ich weiß, das habe auch nicht ich gesagt,
Nun, eine integrierte Entwicklungsumgebung kann die Arbeit
erleichtern, aber das muß nicht in allen Fällen stimmen. Oft genug
verheddern sich Leute darin und kommen nicht zu Potte.
Obendrein neigen viele Leute dazu, die IDE für die Toolchain zu halten
und nicht mehr zu wissen, wie man die eigentlichen Tools aufruft und
benutzt. Abgesehen davon ist ganz oft eine Abhängigkeit von Projekten zu
genau DER IDE, womit sie entstanden, zu sehen.
Eigentlich gilt auch für sowas der altbekannte Spruch, daß gut gemeintes
sich als dessen Gegenteil erweist. Wer nur Vorgekautes schluckt, hat
oftmals vergessen, wie man selber kaut.
W.S.