8 Stimmen

Wo teilen Sie gerne lange Schlangen?

Was ist Ihre persönliche Heuristik für die Auswahl der Stellen, an denen eine Zeile unterbrochen werden soll, wenn Sie lange Zeilen manuell umbrechen?

Angenommen, diese Zeile ist zu lang, wo könnte man sie unterbrechen und in welcher Reihenfolge?

double var = GetContext()->CalculateValue(element, 10.0);

Die meisten Leute sind sich einig über die Trennung der Parameter pro Zeile:

double var = GetContext()->CalculateValue(element,
                                          10.0);

Macht jemand eine Pause bei einem Eröffnungsparen?

double var = GetContext()->CalculateValue(
                                 element, 10.0);

Aber wie wäre es mit einem Dereferenzierungsoperator (oder . ):

double var = GetContext()
                 ->CalculateValue(element, 10.0);

oder würden Sie:

double var = GetContext()->
                 CalculateValue(element, 10.0);

Gibt es einen Unterschied für den Zuweisungsoperator?

double var = 
    GetContext()->CalculateValue(element, 10.0);

o

double var
    = GetContext()->CalculateValue(element, 10.0);

Gibt es noch andere?

Wenn Ihr System verfahrensorientiert ist, könnten Sie wie folgt antworten:

  1. Parameternamen mit Komma
  2. Bevor eine -> o . Betreiber
  3. Nach einem Zuweisungsoperator

Oder stellen Sie einfach einen Beispielcode ein!
Bonuspunkte gibt es, wenn Sie Ihre Entscheidung für einen Studienabbruch akademisch begründen können.

4voto

verisimilidude Punkte 728

Ich mache die Spaltungen gerne in der Reihenfolge der Bindungsstärke, wobei das Ende der Schnur zuerst erreicht wird. In Ihren Beispielen würde ich also am =-Zeichen trennen. Wenn dies immer noch über den Rand hinausgeht, würde ich am -> trennen.

Die Idee, eine Zeile aufzuteilen, dient ausschließlich dem Nutzen der Leser (da es dem Kompilierer egal sein kann). Ich finde, dass es geistig einfacher ist, Codestücke, die in logische Gruppen unterteilt sind, zu zerlegen.

4voto

David Punkte 189311

In Ihrem speziellen Beispiel würde ich persönlich die vierte Variante wählen:

double var = GetContext()->
             CalculateValue(element, 10.0);

Ich war noch nie ein Fan von streng definierten Code-Formatierungsstandards, abgesehen von der Grundregel, den eigenen Code immer so zu formatieren, dass er Sinn macht (insbesondere für jemanden, der ihn nicht geschrieben hat) und leicht zu lesen ist. Jede zu weit gefasste Regel wie "füge immer einen Zeilenumbruch an dieser oder jener Stelle in einer Zeile ein" oder sogar "benenne Variablen immer nach diesem oder jenem Benennungsschema" passt mir einfach nicht in den Kram. Ich finde, dass sie auf lange Sicht mehr schaden als nützen.

Es berücksichtigt Randfälle nicht sehr gut, es legt den Fokus auf das Falsche (die Punkte der Syntax statt auf die tatsächliche lesbare Bedeutung und den Fluss des Codes) und es fördert das Ziel der Kommodifizierung des Entwicklers, um die Position so Plug-and-Play wie möglich zu machen, ohne das eigene beste Urteilsvermögen des Entwicklers zu berücksichtigen.

(Ok, das war jetzt vielleicht ein bisschen zu viel des Guten. Ich bitte um Entschuldigung. Aber der Punkt bleibt.)

Grundsätzlich sollte der Code ohne konkrete Regeln von Fall zu Fall so gestaltet werden, dass er am besten zu dem passt, was er auf lesbare Weise sagen will. Die Entwickler sollten dementsprechend ihr bestes Urteilsvermögen einsetzen.

2voto

Edward Strange Punkte 39597

Ich trenne an der Stelle und rücke so weit ein, wie es für die Lesbarkeit des Codes erforderlich ist. Es geht nur um Ästhetik, daher ist jede "akademische Rechtfertigung" nicht nützlicher als jede andere erfundene, nachträglich begründete Ausrede, um das zu tun, was man willkürlich beschlossen hat.

0voto

jhuebsch Punkte 451

Ich bin ein Fan von Unterbrechungen an der ersten Klammer und dann an jedem der Parameter

0voto

ford Punkte 1791

Für diese Linie:

double var = GetContext()->CalculateValue(element, 10.0, foo);

Ich würde die Verknüpfung nach dem ersten Parameter unterbrechen und die nachfolgenden Elemente dort anordnen, wo der erste Parameter begann, aber in der nächsten Zeile:

double var = GetContext()->CalculateValue(element,  
                                          10.0, foo);

Wenn die zweite Zeile zu lang wird, machen Sie eine dritte und so weiter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X