Warum gibt PEP-8 eine maximale Zeilenlänge von 79 Zeichen an? [geschlossen]

235

Warum sollte Python PEP-8 in diesem Jahrtausend eine maximale Zeilenlänge von 79 Zeichen angeben?

So gut wie jeder Code-Editor unter der Sonne kann längere Zeilen verarbeiten. Was mit dem Verpacken zu tun ist, sollte die Wahl des Inhaltskonsumenten sein, nicht die Verantwortung des Inhaltserstellers.

Gibt es in diesem Alter (zu Recht) gute Gründe, sich an 79 Zeichen zu halten?

pcorcoran
quelle
72
Die Antwort auf Ihre Frage finden Sie in PEP-8.
CDLeary
28
Kürzere Leitungslängen steigern die Produktivität durch Erhöhung Ihres KLOC. : p
Alex
26
Die Beschränkung auf 79 Zeichen ist vollständig veraltet. Jede bescheiden komplexe Codebasis zeigt, wie das Lesen von Code viel schwieriger wird. Beispiel: github.com/openstack/nova/blob/master/nova/network/manager.py
Jonathan
6
@ Jonathan: sieht gut aus für mich ...
nperson325681
9
Verwenden Sie nicht nebeneinander verschiedene Diff-Tools?
Endolith

Antworten:

128

Ein großer Teil des Werts von PEP-8 besteht darin, die Leute davon abzuhalten, über unwichtige Formatierungsregeln zu streiten, und mit dem Schreiben von gutem, konsistent formatiertem Code fortzufahren. Sicher, niemand denkt wirklich, dass 79 optimal ist, aber es gibt keinen offensichtlichen Vorteil, wenn man es auf 99 oder 119 ändert oder was auch immer Ihre bevorzugte Zeilenlänge ist. Ich denke, die Auswahlmöglichkeiten sind folgende: Befolgen Sie die Regel und finden Sie einen lohnenden Grund, um den Sie kämpfen müssen, oder stellen Sie einige Daten bereit, die zeigen, wie sich Lesbarkeit und Produktivität mit der Zeilenlänge unterscheiden. Letzteres wäre äußerst interessant und hätte meiner Meinung nach gute Chancen, die Meinung der Menschen zu ändern.


quelle
28
Die meisten Lesestudien werden in Zoll und nicht in Zeichen pro Zeile durchgeführt. Die 66-Zeichen-Regel basiert auf Studien zum Lesen von Zeitungen. Jüngste Studien haben gezeigt, dass beim Lesen von Online-Artikeln die Lesegeschwindigkeit ohne Verständnisverlust auf bis zu 120 Zeichen pro Zeile (10 Zoll bei Schriftgröße 12) ansteigt.
Tempo
7
Eigentlich jeder, der in diesem Thema lesen Sie denkt , dass 79 Zeichen optimal ist. Deshalb wurde es zu PEP8 hinzugefügt! Diese Antwort ist eigentlich falsch. Dieser ist der richtige
erikbwork
6
Ich dachte, die Frage ist, warum 79 besser ist als 80 oder 78
n611x007
157
there's no obvious gain in changing it to 99 or 119 or whatever your preferred line length is Das ist in vielerlei Hinsicht so falsch. Schließen Sie eine Zeile mit 40 Zeichen ein und sagen Sie mir, wie lesbar sie ist. Offensichtlich weniger Wrapping = mehr Lesbarkeit, solange Sie über den Bildschirm verfügen, was Sie 2015 tun. Das Verpacken beeinträchtigt die Lesbarkeit. Die Lesbarkeit wirkt sich auf die Wartbarkeit aus. Die Wartbarkeit wirkt sich auf die Qualität aus. Und die Qualität wird beeinträchtigt, wenn Sie mit 80 Zeichen einwickeln. Punkt.
Jonathan
6
Das Streiten über die Lesbarkeit mit etwas anderem als Code ist nutzlos, da diese Studien davon ausgehen, dass Text ausgeführt wird. Code sieht mit jeder Zeilenlänge (Zeichen) völlig anders aus. Und selbst wenn Sie bis zum Ende der Zeile schreiben, ändert der Einzug die Anzahl der Zeichen pro Zeile.
Corvince
111

Halten Sie Ihren Code nicht nur maschinenlesbar, sondern auch lesbar. Viele Geräte können immer noch nur 80 Zeichen gleichzeitig anzeigen. Außerdem wird es für Personen mit größeren Bildschirmen einfacher, mehrere Aufgaben zu erledigen, da mehrere Fenster nebeneinander eingerichtet werden können.

Die Lesbarkeit ist auch einer der Gründe für das erzwungene Einrücken von Zeilen.

Justin Bozonier
quelle
58
Ja, selbstverständlich. Aber warum 79? Warum nicht 100 oder 120? Die Lesbarkeit der Dinge funktioniert in beide Richtungen. Zu viel Auf- und Ablesen von Code ist auch schwer zu verstehen.
pcorcoran
17
Es ist wahr, dass viele Geräte nur 80 Zeichen anzeigen können. Wie viele von ihnen können kein Soft-Wrapping durchführen?
Jim
39
Es wird auch bevorzugt, keinen Code-Wrap zu haben. Aus Sicht der Benutzererfahrung ist dies für die meisten nicht akzeptabel.
Justin Bozonier
8
Es gibt einige Betriebssysteme wie MVS, die keine Zeilen mit mehr als 72 Zeichen verarbeiten können. PEP-8 wird hier nicht helfen. Das Festlegen einer willkürlichen Begrenzung auf 79 Zeichen ist nicht sinnvoll, da die Qualität der Zeichen pro Zeile vom Editor, dem Monitor, den persönlichen Vorlieben des Benutzers usw. abhängt.
Codymanix
96
Mit 79 Zeichen verwenden Programmierer auch kürzere, kryptischere Variablen- und Funktionsnamen, um alles passend zu machen. Dies ist schlecht für die Lesbarkeit.
Gert Steyn
46

Ich bin ein Programmierer, der täglich mit viel Code umgehen muss. Open Source und was im eigenen Haus entwickelt wurde.

Als Programmierer finde ich es nützlich, viele Quelldateien gleichzeitig geöffnet zu haben und meinen Desktop häufig auf meinem (Breitbild-) Monitor so zu organisieren, dass zwei Quelldateien nebeneinander liegen. Ich programmiere vielleicht in beiden oder lese nur einen und programmiere in dem anderen.

Ich finde es unbefriedigend und frustrierend, wenn eine dieser Quelldateien> 120 Zeichen breit ist, weil ich eine Codezeile nicht bequem in eine Bildschirmzeile einfügen kann. Es stört die Formatierung des Zeilenumbruchs.

Ich sage '120', weil das die Ebene ist, bis zu der ich mich darüber ärgern würde, dass Code breiter als ist. Nach so vielen Zeichen sollten Sie sich aus Gründen der Lesbarkeit über Zeilen aufteilen, geschweige denn Codierungsstandards.

Ich schreibe Code mit 80 Spalten. Dies ist nur so, dass es keine so schlechte Sache ist, wenn ich über diese Grenze lecke.

Jerub
quelle
11
"Ich schreibe Code mit 80 Spalten. Dies ist nur so, dass es keine so schlechte Sache ist, wenn ich über diese Grenze lecke." Auch für mich.
KobeJohn
4
10 Jahre später: Hängt das nicht nur davon ab, wie Sie den Zeilenumbruch einrichten? Zeilenumbruch kann so intelligent oder dumm sein, wie Sie es möchten. Wenn das Lesen unangenehm ist, ist dies nur ein Fehler Ihres Editors.
David Mulder
2
Ich codiere auf 120 Zeichen, aber gelegentlich länger, wenn es der Lesbarkeit entspricht. Schwarze Formate bei 120, wenn Sie es sagen. PEP-8 sagt auch "es ist in Ordnung, das Zeilenlängenlimit auf 99 Zeichen zu erhöhen", aber die Leute scheinen diese Informationen die meiste Zeit zu unterdrücken. Fast niemand verwendet Terminals mit einer Breite von 80. Protokollnachrichten sind niemals 80 breit.
NeilG
37

Ich glaube, diejenigen, die Typografie studieren, würden Ihnen sagen, dass 66 Zeichen pro Zeile die am besten lesbare Breite für die Länge sein sollen. Wenn Sie einen Computer über eine SSH-Sitzung remote debuggen müssen, sind die meisten Terminals standardmäßig auf 80 Zeichen eingestellt, 79 passen einfach. Der Versuch, mit etwas weiterem zu arbeiten, wird in einem solchen Fall zu einem echten Problem. Sie werden auch überrascht sein, wie viele Entwickler vim + screen als tägliche Umgebung verwenden.

Sean O Donnell
quelle
<flame> Emacs FTW! </ flame> +1. Ich denke, das Limit von 79 stammt aus den Anfängen von UNIX (und möglicherweise MULTICS) mit 80x25-Zeichen-Terminals.
Joe D
10
Meine ssh + screen + vim-Umgebungen haben kein Problem damit, lange Zeilen anzuzeigen.
chrishiestand
54
"66 Zeichen pro Zeile sollen die am besten lesbare Breite für die Länge sein" Ich nehme an, wir sollten Code in 2 oder 3 Spalten schreiben, da die Zeitungen so angeordnet sind.
Mark E. Haase
23
@mehaase: Ihre sarkastische Bemerkung ist der Wahrheit ziemlich nahe: Anständige Redakteure können geteilte Fenster erstellen und verschiedene Dinge nebeneinander anzeigen (aus gleichen oder verschiedenen Dateien). Zufälligerweise ist dies normalerweise nur möglich, wenn der Code einen Zeilenlängenstandard hat ...
nperson325681
2
@mehaase: Klingt eigentlich großartig. Ich scherze nicht.
Teekin
19

Das Drucken einer monospaced Schriftart in Standardgrößen beträgt (auf A4-Papier) 80 Spalten x 66 Zeilen.

Josh
quelle
11
Ich akzeptiere diesen Standard; es ist gültig. Aber wer druckt noch Code? Wer druckt außerdem Code aus einer Umgebung, in der Skalierung oder andere Formatierungsoptionen nicht toleriert werden? Wann war jemand, den Sie kennen, das letzte Mal überrascht, dass er keine Zeile mit 100 Zeichen rendern konnte?
Pcorcoran
3
Warum drucken die Leute 2012 Code? Das erinnert mich daran, dass ich zu einer Technologiekonferenz gegangen bin und eine Tasche und einen gedruckten Ordner voller Präsentationen bekommen habe. Es sind die Menschen des 21. Jahrhunderts: Schicken Sie mir die Dias per E-Mail, sonst gelangen Tasche und Ordner direkt auf eine Mülldeponie.
Mark E. Haase
2
Warum ist 80-1 besser als 80-0 oder 80-2?
n611x007
11
"bei Standardgrößen" Sie sagen? Erzählen Sie mir mehr über diese allgemein akzeptierten Standardgrößen.
Bruno Bronosky
15
Ja, lassen Sie uns vor allem die Darstellung des Codes auf bedrucktem Papier priorisieren.
Jonathan
8

Hier ist der Grund, warum ich das 80-Zeichen mit mag: Bei der Arbeit verwende ich Vim und arbeite an zwei Dateien gleichzeitig auf einem Monitor, der mit 1680 x 1040 läuft (ich kann mich nie erinnern). Wenn die Zeilen länger sind, habe ich Probleme beim Lesen der Dateien, selbst wenn der Zeilenumbruch verwendet wird. Unnötig zu sagen, ich hasse es, mit dem Code anderer Leute umzugehen, weil sie lange Schlangen lieben.


quelle
Verwenden Sie vim nicht auch für Javascript / HTML?
Elad Silber
2
@eladsilver Ich kann nicht herausfinden, ob das ein Witz ist? :-D
Steven Church
Entschuldigung, nicht sehr tiefgreifend mit vim. Wenn Sie im Web arbeiten, verwenden Sie es natürlich auch für HTML / JS. Diese Typen haben nie ein Limit von 80 Zeichen, da Front-End-Entwickler nichts über pep8 wissen. Daher sollten Sie Python auf 80 Zeichen beschränken wird Ihr Problem nicht lösen, wenn Sie mehr als nur Python verwenden. Ich frage also, wie gehen Sie mit anderen Codierungssprachen um?
Elad Silber
Ich arbeite in Vim mit 120 Zeichenzeilen. Ich benutze: Diffthis mit horizontaler Aufteilung. Wenn Sie nur 160 Zeichen auf 1680 Pixel einfügen können, müssen Sie eine große Schriftgröße haben.
NeilG
4

Da Leerzeichen in Python eine semantische Bedeutung haben, können einige Methoden des Zeilenumbruchs zu falschen oder mehrdeutigen Ergebnissen führen. Daher müssen einige Grenzen gesetzt werden, um diese Situationen zu vermeiden. Eine Zeilenlänge von 80 Zeichen war Standard, da wir Teletypen verwendet haben. 79 Zeichen scheinen also eine ziemlich sichere Wahl zu sein.

Chris Upchurch
quelle
4
Es gibt zwei verschiedene Arten des Zeilenumbruchs. Es gibt Hard-Wrapping, bei dem die Zeilen mit Zeilenumbrüchen getrennt werden, und Soft-Wrapping, bei dem sie nur mit Unterbrechungen angezeigt werden, aber physisch eine einzelne Zeile bleiben. Ich sehe kein Problem mit letzterem.
Jim
4
Die meisten Python-Editoren führen keinen weichen Zeilenumbruch durch, da dadurch mehrdeutig schwer lesbarer Code in einer Sprache erzeugt wird, in der Leerzeichen und Einrückungen wichtig sind.
Chris Upchurch
4
Es wird kein mehrdeutiger oder schwer lesbarer Code erzeugt, solange die Umhüllung irgendwie visuell identifiziert wird. Kate macht das und es funktioniert gut. Wenn ein Editor dies nicht behandelt, ist dies ein Grund, einen Fehler gegen den Editor einzureichen, und kein Grund, einen Codierungsstil festzulegen, der den Fehler vermeidet.
Jim
5
Selbst wenn es visuell angezeigt wird, ist der Code dennoch viel schwieriger zu lesen, weshalb Python-Editoren ihn im Allgemeinen nicht unterstützen.
Chris Upchurch
Haben Sie es tatsächlich über einen längeren Zeitraum versucht? Ich habe. Es macht es meiner Erfahrung nach nicht schwieriger, den Code zu lesen. Können Sie die Behauptung stützen, dass Python-Editoren die Funktion aus diesem Grund nicht enthalten? Ich habe diese Behauptung noch nie gehört.
Jim
1

Ich stimme Justin zu. Um es zu erläutern, sind zu lange Codezeilen für Menschen schwerer zu lesen, und einige Benutzer haben möglicherweise Konsolenbreiten, die nur 80 Zeichen pro Zeile aufnehmen.

Die Stilempfehlung soll sicherstellen, dass der von Ihnen geschriebene Code von möglichst vielen Personen auf so vielen Plattformen wie möglich und so bequem wie möglich gelesen werden kann.

Schreibgeschützt
quelle
10
Dies ist ein fauler Streit. Es ist nicht immer so, dass 80 Zeilen die Lesbarkeit beeinträchtigen. Ein kurzer Blick auf eine bescheiden komplexe Python-Codebasis, die mit 80 Zeilen umbrochen wird, zeigt tatsächlich das Gegenteil: Das Umschließen von Funktionsaufrufen mit einer Zeile auf mehrere Zeilen erschwert die Verfolgung von WTF.
Jonathan
0

Denn wenn Sie es über die 80. Spalte hinaus verschieben, bedeutet dies, dass Sie entweder eine sehr lange und komplexe Codezeile schreiben, die zu viel bewirkt (und Sie sollten daher umgestalten), oder dass Sie zu viel eingerückt haben (und daher umgestalten sollten).

Stefano Borini
quelle
90
-1, ich glaube nicht, dass man kategorisch sagen kann, dass jede Linie hinter der 80-Zeichen-Grenze einen Refaktor erfordert. Klassenmethoden werden bereits zweimal eingerückt, fügen Sie einen weiteren Einzug für ein "Wenn" usw. und ein einfaches Listenverständnis hinzu, und es ist ziemlich einfach, die 80-Zeichen-Grenze zu überschreiten.
42
Ganz zu schweigen davon, dass selbst ein einfacher Ausdruck einige Zeichen pro Zeile verschlingt, wenn Sie Symbole so benennen, dass sie für Menschen lesbar sind, z. B. "users_directed_graph" anstelle von "usr_dir_gph".
Mark E. Haase
8
Ich habe in Python immer festgestellt, dass es ratsam ist, anzuhalten und darüber nachzudenken, warum das so ist, wenn ich 80 Zeichen überschreite. Normalerweise ist eine schlechte Entwurfsentscheidung schuld.
Mike Vella
3
Dies war auch meine Erfahrung. Es werden auch längere Variablennamen angesprochen, wie @mehaase hervorhebt, aber ich denke, dies ist ein Vorteil. Die verfügbaren Kombinationen von drei aufeinander folgenden Wörtern (im Fall von "users_directed_graph") stellen die Anzahl der Komponenten in den Schatten, die angemessen in einen einzelnen Namespace passen. Ich halte älteren Code, den ich geschrieben habe und bei dem sich viele ähnlich lange Variablennamen im selben Namespace befinden, für schwieriger zu lesen und im Allgemeinen besser zu überarbeiten.
TimClifford
4
In einer Sprache, die für jede Änderung des Gültigkeitsbereichs Einrückungen erfordert, ist die Aussage, dass 80 Zeichenzeilen der Komplexität entsprechen, ein zu vereinfachtes Argument. Manchmal sind 80 Zeichen genau das Richtige, um eine Funktion aufzurufen. Moderne IDEs / Editoren für andere Sprachen sind intelligent genug, um dies zu erkennen, und können erkennen, wann sie verpackt werden müssen, anstatt pauschale Einschränkungen für alles festzulegen, was die Lesbarkeit insgesamt beeinträchtigt.
Jonathan