Umbrechen Sie automatisch lange Zeilen im Python-Code

1. Zusammenfassung

Ich finde nicht, wie ich lange Zeilen in pyDateien automatisch umbrechen kann. Es wäre nett, wenn mir jemand ein Befehlszeilen- oder Sublime Text-Tool nennen könnte.

Zur Zeit muss ich lange Zeilen manuell umbrechen .

2. Argumentation

PEP8 E501-Regel. Selbst wenn ich die maximale Zeilenlänge beispielsweise auf 120 setze, überschreiten einige Zeilen das Limit.

3. Anforderungen

  1. Windows 10 64-Bit Enterprise LTSB EN,
  2. Python 3.6.3,
  3. Erhabener Text, Build 3143.

4. Beispiel

Meine SashaIsTheWorld.pyDatei:

amazing = True
spectacular = True
excellent = True
breathtaking = True
exciting = True
fantastic = True
unmatched = True
magnificent = True
breakneck = True
fascinating = True

if amazing and spectacular and excellent and breathtaking and exciting and fantastic and unmatched and magnificent and breakneck and fascinating is True:
    print("It about Sasha")
else:
    print("She's the one for me, She's my ecstasy, She's the one I need. She's one in a million, She's once in a lifetime, She made me discover one of the stars above us.")
D:\SashaPythonista>flake8 SashaIsTheWorld.py
SashaIsTheWorld.py:12:121: E501 line too long (153 > 120 characters)
SashaIsTheWorld.py:15:121: E501 line too long (177 > 120 characters)

5. Erwartetes Verhalten

Zum Beispiel:

amazing = True
spectacular = True
excellent = True
breathtaking = True
exciting = True
fantastic = True
unmatched = True
magnificent = True
breakneck = True
fascinating = True

if amazing and spectacular and excellent and breathtaking and exciting and fantastic \
        and unmatched and magnificent and breakneck and fascinating is True:
    print("It about Sasha")
else:
    print("She's the one for me, She's my ecstasy, She's the one I need. "
          "She's one in a million, She's once in a lifetime, She made me discover one of the stars above us.")

6. Nicht geholfen

  1. Google-Suche,
  2. Für Python:
    1. autopep8 mit--agressiveund--experimental,
    2. pyformat .
  3. Für erhabenen Text:
    1. AutoWrap hat keine „intelligente“ Verpackung. Dieses Paket fügt kein\Symbol und keine zusätzlichen Anführungszeichen hinzu.
    2. Das Daniel Beck-Plugin hat auch kein „intelligentes“ Wrapping.
    3. Sublime-Wrap-Plus funktioniert nur für Strings in dreifachen Anführungszeichen .
    4. WrapStatement funktioniert in meinem Beispiel nicht für Fälle.

7. Nicht anbieten

Bitte nicht sagen, dass:

  1. Ich sollte keine langen Zeilen im Code haben,
  2. Ich muss alle langen Zeilen manuell umbrechen,
  3. Ich muss Lineal verwenden . Ja, ich benutze es.

Antworten (1)

Zu lang für einen Kommentar, vielleicht keine Antwort, da es eher auf Refactoring als auf ein Tool zum Umbrechen langer Zeilen hinweist.

Wenn dies für die Arbeit ist, sollten sie Ihnen sagen, wie; Wenn es sich um privaten Code handelt, dann schwitzen Sie nicht, haben Sie einfach lange Zeilen, wenn Sie möchten.

Davon abgesehen sind lange Schlangen ein Code -Geruch . Spontan fallen mir folgende Gründe für lange Warteschlangen ein (Sie können gerne weitere hinzufügen).

  1. sehr lange Saiten
  2. tief verschachtelte Verzweigung (viele ifs)
  3. komplizierte Bedingungen (if (A =B) and (V C> 123456) or (dictionary['key'] = 'value') or ....

1) kann durch manuelles Brechen der langen Saiten gehandhabt werden, von denen ich nicht viele erwarten würde.

2 & 3 schlagen beide ein Refactoring vor, und ich sehe aus Ihrem hohen Ruf auf (russischem) Stack Overflow, dass Sie darüber Bescheid wissen sollten :-)

Für 1) verbieten einige Codierungsstandards das Besting von Bedingungen, die mehr als X tief sind (meine aktuelle Firma sagt 4, ymmv). Wenn es viele mehr gibt, könnte dies bedeuten, dass die Funktion versucht, mehr als eine Sache zu tun – was schlecht ist

Für 2 & 3 wird eine solche Komplexität besser in einer Funktion versteckt und durch ersetztif ConditionsValid():

In beiden Fällen erhalten wir (mehr) kleinere Funktionen, die einfacher zu lesen, zu warten und zu testen sind.

Ich vermute, dass Sie das alles wissen, also schreibe ich für andere Leser der Frage.

Trotzdem ist meine Empfehlung, nicht nach einem Tool zu suchen, das lange Zeilen umbricht, sondern sich zu fragen, warum man so viele lange Zeilen hat (und sich ein paar zu verzeihen, wenn man es rechtfertigen kann).

Vielleicht möchten Sie auch auf Programmierer schauen (oder fragen).

Bitte sag mir was du denkst.