Linebreak Style

Welchen Style findest du am besten? (Siehe Thread für mehr Infos)

  • Version 3 (Umbrechen vor dem Funktionsnamen bevorzugt)

    Stimmen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    12

Crysis nerd

Freizeitschrauber(in)
Hi,

wollte mal ne kleine Umfrage machen :-)
Es geht um den Style beim Schreiben von langer Funktionsdeklarationen, die das Zeichenlimit (80 Zeichen) überschreitet.
Folgende Versionen gibt es: [C++] C++ LineBreak Style - Pastebin.com
Code:
// Version 1
static void keyCallback(GLFWwindow *win, int key, int scancode, int action,
                        int mods);
 
 
// Version 2
static void keyCallback(
  GLFWwindow* win, int key, int scancode, int action, int mods);
 
 
// Version 3
static void
  keyCallback(GLFWwindow* win, int key, int scancode, int action, int mods);
 
 
// Version 4
static void keyCallback(GLFWwindow* win,
                        int key,
                        int scancode,
                        int action,
                        int mods);

Kleiner Hinweis noch: Die Funktion wäre in einem Klassenscope und nochmal 2 Leerzeichen eingerückt. Daher macht das hier den Eindruck, als läge das Zeichenlimit bei 78.

Grüße,
Lukas
 
Ein Limit von 80 Zeichen finde ich, bei den heutzutage üblichen Auflösungen und gegebenenfalls auch noch einem Mulit-Monitor-Setup, überholt. Abgesehen davon würde ich noch am ehesten zu v1 tendieren.
Falls eine Funktionsdefinition wirklich mal die Bildschirmbreite sprengen sollte, sollte man, meiner Meinung nach, mal darüber nachdenken, ob hier nicht was deutlich schief läuft.
 
Genau deiner Meinung war ich vor ca. einem halben Jahr auch. Ist irgendwie sinnlos einen 1080p Monitor zu haben und nur auf einem viertel des Bildschirms zu arbeiten.
Aber ich habe mich informiert und wurde umgestimmt:

Der wichtigste Grund ist meiner Meinung nach, dass die Lesbarkeit deutlich zunimmt. Und das ist nicht meine persönliche Meinung, sondern das geht jedem Menschen so: Menschen lesen schmale Texte deutlich schneller als breite Textspalten. Das ist keine neue Erkenntnis: Zeitungen veröffentlichen immerhin auch mit sehr schmalen Textspalten :)
Weiterhin ist ein Limit sehr sinnvoll, wenn man Dateien mergen möchte. Wer mal in größeren Projekten gearbeitet hat (oder auch kleineren), sollte wohl schonmal wa von SVN, git und/oder anderen Versionsverwaltungssystemen gehört haben. Wenn dort kein automatisches Zusammenfügen zweier unterschiedlicher Versionen per Software möglich ist, muss der Programmierer das selber machen. Und das schafft man typischerweise am besten, wenn man die beiden Dateien nebeneinander anguckt. Oft auch noch das Ergebnis des Merges, sodass man 3 Dateien nebeneinander angucken möchte.
Ich könnte noch ein paar weitere gute Gründe aufzählen, aber es soll ja nicht wie Propaganda wirken ;)

Man muss zwar nicht umbedingt mit 80 arbeiten, aber das ist in vielen Projekten so üblich, daher habe ich mich auch an 80 Zeichen gewöhnt. Und ich muss sagen, dass es mir extrem gut gefällt... Ich stelle dann typischerweise die Schriftgröße etwas höher. Ich bin zumindest sehr zufrieden mit meiner Entscheidung.

Grüße
Lukas
 
Ich habe auch nicht behauptet, dass man die volle Bildschirmbreite nutzen sollte, sondern, dass ein Limit von 80 Zeichen nicht mehr zeitgemäß ist. Ich will aber niemanden vorschreiben, was er machen soll. Das ist nur meine persönliche Meinung.

Und wie ich schon erwähnte, läuft eigentlich schon etwas ganz anderes schief, wenn eine Funktion derart viele Parameter hat, dass sie die halbe Bildschirmbreite oder mehr belegt.
 
Wenn man in einer großen Codebase Arbeitet, hat man sich eh an die Guidelines zu halten (sofern welche Vorhanden), diese sind auch von Projekt zu Projekt anders (z.B http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml oder https://source.android.com/source/code-style.html).

Bei meinen persönlichen Projekten (bzw Projekten die ich Leite), habe ich ein Soft Limit von 120 Zeichen festgelegt. Soft-Limit insofern, das es in einem bestimmten Rahmen erlaubt ist, diese zu überschreiten. Bei 12pt Menlo ist das eine angenehme Breite zum Lesen und man hat auch für etwaige etwas längere Methoden genug Platz. 80 wiederum (wie es z.B teilweise im Linux Kernel praktiziert wird) finde ich extrem zu wenig.
 
Möchte auch keinem was vorschreiben :)
80 Zeichen kann man gut und gerne als zu wenig bezeichnen, das stimmt schon.. Softlimit ist eigentlich wohl eine gute Idee, aber hat einen Nachteil gegenüber einem festen Limit. Ich z.B. habe meine Arbeitsumgebung eingerichtet auf 80 Zeichen Limit und somit kann ich meinen Bildschirmplatz am besten nutzen. Wenn jetzt ein Softlimit von 120 die Regel ist, dann muss man seine Entwicklungsumgebung auf.. ich sag mal 140 Zeichen einrichten, um seitliches Scrollen zu verhindern (was echt schrecklich ist).
Zum einen hat man hier das Problem beim mergen z.B. oder generell wenn man gerne mit 2 Spalten arbeitet, wenn man einen zu kleinen Monitor hat und den Quellcode nicht in der minimalen lesbaren Schriftgröße anzeigen möchte.
Außerdem "verschwendet" man viel Platz auf dem Bildschirm, weil die meisten Zeilen eh nicht über... ich sag mal 65 .. Zeichen hinausgehen. Wenn man dann einzelne Zeilen bis 140 hat, sieht man auf sehr viel Platz garnichts. Weil es halt die langen Zeichen so selten gibt.
Aber wie gesagt, ist nur meine Meinung und meine Erfahrung mit sowas...

Im Übrigen:
Und wie ich schon erwähnte, läuft eigentlich schon etwas ganz anderes schief, wenn eine Funktion derart viele Parameter hat, dass sie die halbe Bildschirmbreite oder mehr belegt.
Dem würde ich erstens nicht zustimmen so, außerdem hat man ja in C++ (wie das Beispiel) noch andere Sachen, die eine Zeile lang machen können :P
Vorallem bei Funktionsdeklarationen kann man viele tolle Sachen einbauen ^_^
 
Zuletzt bearbeitet:
Line Wrapping? Wenn es länger ist, wrappt es halt automatisch. Wo ist da das Problem?
Ich hab einfach kein Problem mit Platz auf meinen Desktops. Ich hab 3x 27" mit 1440p auf meinem Schreibtisch stehen, :fresse: und selbst auf meinem MacBook ist das kein Problem.

Aber du hast natürlich recht, eine menge Zeilen gehen nicht über eine bestimmte größer hinaus, bei mir ist das im Schnitt so um die 80, was schon deinem Limit entsprechen würde.
 
Dem würde ich erstens nicht zustimmen so, außerdem hat man ja in C++ (wie das Beispiel) noch andere Sachen, die eine Zeile lang machen können :P
Vorallem bei Funktionsdeklarationen kann man viele tolle Sachen einbauen ^_^

Du bist also der Meinung endlos lange Parameterlisten sind kein Zeichen für unsauberen und schlecht durchdachten Code?
 
Du bist also der Meinung endlos lange Parameterlisten sind kein Zeichen für unsauberen und schlecht durchdachten Code?
Jein. Ich weiß ja, was ihr meint. In gut strukturiertem Programmcode kommen selten Funktionen vor, die eine große Anzahl von Parametern haben... Nichts desto trotz kann es sicherlich hin und wieder mal vorkommen. Gerade auch bei Funktionen, die eine variable Anzahl an Parametern haben (die wurden ja gerade dafür designed).
Und "endlos lang" habe ich auch nicht gesagt, aber Parameterlisten, die 80 und auch 120 Zeichen überschreiten, sind noch nicht direkt ein schlechtes Zeichen ;) Kann zwar immer ein Indiz sein, aber naja...
 
Sie sind ein Zeichen für schlechtes Design, wenn du 10 - 20 Parameter einer Funktion übergibst, würde ich mir Gedanken machen ob man das nicht Splitten kann. ;)
Wenn nun allerdings 3 Parameter hast, die einfach lang sind, ist es wiederrum was anderes. Bsp:

int SignUpForServiceByEmail(myLongNameSpace::myDatatypeForEmail email, myLongNameSpace::myDatatypeForPassword password);
 
ich hab bisher bewusst garnich wahrgenommen, dass es sowas "offiziell" gibt (also unter einer bezeichnung wie linebreak style und dass sich da viele drüber gedanken machen ^^), habe aber auch schon öfters - wenns für mein persönliches empfinden zu lang wurde - sowas wie version 4 genutzt. allerdings dann eher wie so einen funktionsblock. also in etwa so:
Code:
bla myFunction(
        param1,
        param2,
        param3,
        param4...
) {
    function_code();
}

war dann auch eher aus nem eigenen empfinden heraus und weniger, weil das irgendwer so auch macht ^^ schon intressant, wie jeder alles für sich selbst neu erfindet :ugly:
 
Schau dir mal die Clean Code Regeln an. Weiß nicht so genau wie weit das von C++ akzeptiert wird, in der Java Welt hat es sich jedoch relativ gut etabliert.
 
Also ich finde Version 4 immer noch am übersichtlichsten. Gerade wenn ich mich in fremden Code einlesen muss, tue ich mich persönlich mit Version 4 am leichtesten, den Code nachzuvollziehen.
 
Zurück