BeRsErKeR hat geschrieben:Wie schon gesagt. Es geht hier nicht darum ob ein String Formatting besser oder effizienter ist. Es geht hier einzig darum, wie man lange Codezeilen ausdrückt. Als Einzeiler, als Mehrzeiler mit Umbrüchen oder als Mehrzeiler mit Einzelzuweisungen. Wie gesagt kommt am besten mal weg von Strings. Denkt euch einfach eine lange Operation wie 132473284 + 2343324 - myvarname * foobar(123456, pow(2, 6000) + 284943854 - 99999999) + ... + einige_verschaltelungen_spaeter - ...
Ich gehe da in mehreren Schritten vor. Als erstes ziehe ich die Teilausdrücke heraus, welchen ein vernünftiger Namen zugeordnet sind. Lange Ketten von Operationen entstehen typischerweise ja nicht aus dem Nichts. Das kann man dann so lange rekursiv durchführen, bis keine vernünftigen Namen mehr machbar sind.
Wenn der erste Schritt noch nicht ausreicht, dann versuche ich die Teilausdrücke noch weiter zu zerlegen. Da bietet es sich natürlich an die Teile herauszuziehen, so dass die eigentliche Formel sichtbar wird:
Code: Alles auswählen
d = sqrt((x1 - x2)**2 + (y1 - y2)**2)
=>
a = x1 - x2
b = y1 - y2
d = sqrt(a**2 + b**2)
Häufig bleiben dann nur noch Teilausdrücke übrig, welche sehr ähnlich sind oder sich zum Teil überschneiden. Wenn es der Übersichtlichkeit dient, dann ziehe ich den Kram noch in Dummy-Variablen (oder einer einfachen Funktion) raus, sonst eben nicht.
Wenn keiner der vorherigen Schritte anwendbar ist, dann formatiere ich den Code üblicherweise nur um. Neue Zeilen mache ich üblicherweise abhängig von den Operatoren (üblicherweise der Stärke der Bindung), Parameter von Funktion breche ich um und die Reihenfolge der Ausdrücke ordne ich von weniger komplex bis komplex. Das alles eben mit entsprechender Einrückung:
Code: Alles auswählen
a*b + foo(2, bar(f, g, h), 42) + u*v
=>
a*b +
u*v +
foo(
2,
bar(
f,
g,
h),
42)
Wobei die Parameterliste natürlich nur dann umgebrochen wird, wenn es auch sinnvoll ist. In dem Beispiel würde man natürlich ``bar(f, g, h)`` in eine Zeile schreiben.
Klammersetzung versuche ich allgemein durch Einrückung hervorzuheben, das liest sich einfacher. Wie man nun die schließende Klammer setzt (ob hinter den letzten Wert oder einzeln in eine neue Zeile), hängt wohl stark vom eigenen Geschmack ist. Gleiches gilt für die Platzierung der Kommas oder (in diesem Beispiel) die verbindenden +-Operatoren. Am Ende der Zeile sehen sie schöner aus, vor der nächsten Zeile (also ``+ u*v``) sind sie natürlich etwas aussagekräftiger, dass das + zu ``u*v`` gehört und nicht zu ``a*b``.