Wenn Sie in Python oder Javascript arbeiten, sollten Sie Binäroperatoren immer am Ende der vorherigen Zeile einfügen, um zu verhindern, dass Zeilenumbrüche Ihren Code vorzeitig beenden. Es hilft Ihnen, Fehler zu erkennen.
Aber in C oder C ++ ist dies kein Problem, also frage ich mich:
Gibt es einen Grund für mich, die zweite Version der ersten vorzuziehen?
return lots_of_text
+ 1;
gegen
return lots_of_text +
1;
(Hilft einer von ihnen beispielsweise dabei, andere Arten von Fehlern zu vermeiden? Oder wird einer von ihnen als besser lesbar angesehen?)
c++
coding-style
user541686
quelle
quelle
Antworten:
Wie Sie den Antworten entnehmen können, besteht in dieser Angelegenheit kein Konsens. Verwenden Sie das , womit Sie sich besser auskennen, es sei denn, Sie arbeiten in einem Team .
Ich bevorzuge das Einfügen einer neuen Zeile vor Operatoren.
Immer wenn ich Zeilen brechen muss, setze ich normalerweise höchstens einen Begriff derselben "Ebene" in eine Zeile:
Newtons Gravitationsgesetz in Python:
Vergleichen Sie dies mit:
Ich will wissen, dass ich „divide durch Abstand zum Quadrat“, ich will nicht wissen, dass „mass_2 wird geteilt“, weil das nicht ist , wie ich mathematischen Ausdrücke denken.
Außerdem möchte ich normalerweise zuerst wissen, was ich tue (Operator), bevor ich mich darum kümmere, womit ich Dinge mache (Operanden).
Oder betrachten Sie diese verschlungene SQL-Anweisung:
Auf diese Weise kann ich sehen, wie die einzelnen Bedingungen sehr einfach miteinander verbunden werden können, indem ich einfach von oben nach unten überfliege, ohne jede Zeile bis zum Ende lesen zu müssen, um den Operator zu finden, im Gegensatz zu:
Ich denke an Ersteres in Bezug auf "
X
ist wahr", dann ändere ich das, indem ich sage: " UND das ist auch wahr", was sich für mich natürlicher anfühlt als umgekehrt. Außerdem finde ich das erste viel einfacher visuell zu analysieren.Oder ein PHP-Beispiel:
Auch hier kann ich das Lesen nur vertikal überfliegen, um zu sehen, dass ich nur Text verkette, da ich die meiste Zeit das Gefühl habe, dass es mir eigentlich egal ist, was sich in den Zeichenfolgen / Bedingungen befindet.
Natürlich würde ich diesen Stil nicht unbedingt anwenden. Wenn es mir sinnvoller erscheint, die neue Zeile nach einem Operator zu setzen, würde ich dies tun, aber mir fällt derzeit kein Beispiel ein.
quelle
.
, nicht.=
?force
Ich breche fast immer Zeilen vor binären Operatoren, um den Lesern des Codes klar zu machen, dass dies die Fortsetzung eines Ausdrucks und nicht die nächste Anweisung ist. Dies ist wichtig, wenn die nächste Anweisung normalerweise eingerückt wird. Betrachten Sie beispielsweise eine if- Anweisung mit einem komplexen bedingten Ausdruck:
Der zweite Teil des bedingten Ausdrucks kann leicht mit der ersten Aussage des damaligen Teils verwechselt werden. Dies kann ziemlich verwirrend sein, wenn der erste Teil der Bedingung lang ist und das && weit rechts endet. Vergleichen Sie dies mit der Alternative:
Das sieht etwas seltsam aus, macht aber deutlich, dass der zweite Teil der Bedingung nicht der Anfang einer Aussage ist.
Ich mache das auch in anderen Kontexten, aber die if-Anweisung ist die wichtigste, da der Einzug mehrdeutig ist. Natürlich könnte man die Einrückung oder die Platzierung der Klammer ändern, aber das sieht auch seltsam aus.
Das linke Ende der Zeile ist für ein schnelles Leseverständnis wichtiger. Wenn Sie also den Operator am linken Ende platzieren, ist dies ein deutlicherer Hinweis darauf, dass dies ein fortgesetzter Ausdruck und keine Aussage ist.
quelle
+
und-
auch als unäre Präfixoperatoren verstanden werden könnte). Die übliche Lösung, um die fortlaufenden Linien hervorzuheben, besteht darin, sie stärker einzurücken (dh um zwei Ebenen).Ich würde immer die erste verwenden. Sie möchten, dass klar ist, was Sie mit dieser 1 dort machen. Wenn ich das sehen würde und darüber eine Textwand wäre 1, hätte ich keine Ahnung, was in Bezug auf die Verwendung dieser 1 vor sich geht.
Das '+' neben 1 macht deutlich, dass ich zumindest etwas mit der fraglichen 1 mache, anstatt ohne ersichtlichen Grund "Ich bin alles in deinem Code-Typ ..." zu sagen.
quelle
Ich bin der Meinung, dass es das Leseverständnis enorm erleichtert, wenn eine Zeile anzeigt, dass die Anweisung in der nächsten Zeile fortgesetzt wird, indem der binäre Operator am Ende steht und die Anweisung somit unvollständig wird. Das fehlende Semikolon reicht mir nicht aus, um das sofort zu verstehen.
Dies mag einfach eine Frage der Gewohnheit sein, aber wenn Sie nicht ausschließlich in Sprachen arbeiten, die das Semikolon erfordern (was ich angesichts der Verbreitung von Shell-Skripten, Makefiles und Sprachen wie Python ziemlich unrealistisch finde), werden Sie diese Gewohnheit wahrscheinlich auch nicht haben.
EDIT: Giorgio macht einen ausgezeichneten Punkt in den Kommentaren: Diese Verwendung spiegelt die übliche Interpunktion sowohl in Mathematik als auch in natürlichen Sprachen wider. Du würdest schreiben
Du würdest nicht schreiben
quelle