Studien zur optimalen Codebreite?

130

Wenn Sie den "rechten Rand anzeigen" in der IDE Ihrer Wahl aktivieren, werden wahrscheinlich standardmäßig 80 Zeichen verwendet. Ich neige dazu, es aus keinem anderen Grund auf 120 zu ändern, als es der Standard in einem Unternehmen war, mit dem ich vor ein paar Jahren zusammen war, und kein anderes Unternehmen hat mir gesagt, dass ich es anders machen soll.

Meine Frage ist, gibt es Studien, die tatsächlich zeigen, dass 80 Zeichen die optimale maximale Breite für die Lesbarkeit von Code sind, oder ist dieser Wert nur ein "so war es schon immer" und niemand weiß wirklich, warum es so ist? Und sollte die Breite einer Codezeile Teil Ihres Codierungsstandards sein?

Fostah
quelle
1
Obwohl mir keine Studien bekannt sind, finden Sie als Antwort auf diese Frage zahlreiche Meinungen: * Gibt es heutzutage einen gültigen Grund für die Durchsetzung einer maximalen Breite von 80 Zeichen in einer Codedatei?
Adam Bellaire
3
Keine mir bekannten Studien, aber Sie könnten es interessant finden, verschiedene Codierungsstandards für Projekte zu betrachten. Zum Beispiel sind Google 80 Zeichen. ( code.google.com/p/google-styleguide ) wo als WebKit (ala Apple?) keine Begrenzung AFAIK ( webkit.org/coding/coding-style.html ) haben. Mozillas scheint 80 zu sein ( developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length )
gman
Es ist der gleiche Grund, warum wir "Bürokrat" so buchstabieren, wie wir es tun. Denn vor langer Zeit hat jemand einen Standard aus Gründen definiert, die zu diesem Zeitpunkt möglicherweise sinnvoll waren oder nicht. Für die Rechtschreibung war es eine zweifelhafte Faszination für Latein, für Code von der Größe einer Lochkarte. Dann wurde eine Methode als "richtig" bezeichnet. Und kleine Bürokraten setzen seitdem die Standards durch.
Tuntable

Antworten:

115

Tatsächlich geht das 80-Spalten-Ding lange vor DOS. Es kommt von Kartenstempeln, die Geräte mit 80 Spalten waren.

Und um die Frage des OP zu beantworten, gibt es seit etwa 600 Jahren eine "Studie" - das gedruckte Buch. Diese haben sich im Laufe der Jahrhunderte unter Berücksichtigung der Lesbarkeit zu der Position entwickelt, an der sich die durchschnittliche Zeilenlänge für Text derzeit bei etwa 60 Zeichen befindet. Verwenden Sie zur besseren Lesbarkeit engere Ränder.


quelle
84
Ich glaube wirklich nicht, dass man das Lesen natürlicher Sprache mit dem Lesen einer Programmiersprache in Bezug auf die Benutzerfreundlichkeit vergleichen kann.
Frug
25
@Frug - eigentlich kannst du das wahrscheinlich. Der Grund für die Breite von 65 Zeichen liegt nicht darin, dass größere Zeilen nicht gelesen werden können, sondern dass der Bogen zu eng ist, wenn das Auge zur nächsten Zeile wechselt. Sie können dies umgehen, indem Sie die Zeilenhöhe erhöhen. Dies macht es jedoch schwieriger, den Blockabstand zu verwenden, um die Bedeutung zu vermitteln. Daher ist dies in einer IDE wahrscheinlich zu vermeiden.
Jimmy Breck-McKye
32
@Jim - Meine natürliche Sprache enthält keine Wörter mit 30 Zeichen (die ich sowieso nicht benutze) und sie analysiert völlig anders als eine Programmiersprache. Sie können eine Codezeile häufig als vom Rest getrennt gruppieren, sei es eine lange Bedingung oder eine Kombination aus langen Methoden und Klassen. Kombinieren Sie dies mit Einrückung und der Vergleich zwischen den beiden Sprachen wird absurd. Ich habe keinen Zweifel, dass jemand, der die Lesbarkeit und Linienlänge wissenschaftlich untersucht, Einwände gegen Ihre Abwaschung der Unterschiede erheben würde.
Frug
10
@Frug - Ich sehe nicht wirklich, wie Ihre Einwände mit einer meiner Behauptungen zusammenhängen, aber ich kann sehen, dass Einrückungen das von mir vorgeschlagene Modell brechen. Nenn mich aber nicht 'Jim'.
Jimmy Breck-McKye
17
Ein Buch befindet sich normalerweise viel näher an den Augen als ein Monitor. Dies bedeutet, dass weniger Zeichen pro Zeile zulässig sind, wenn der Leser das Buch lesen kann, ohne den Hals strecken zu müssen. Ein Bildschirm befindet sich normalerweise nicht in der Entfernung eines Buches. Dies bedeutet, dass mehr Zeichen pro Zeile verwendet werden können, während die Grenzen des maximalen Augenwinkels eingehalten werden. Außerdem wird Code nicht so oft gelesen, wie er gelesen wird, wodurch diese Breite weniger wichtig wird. Ich (YMMV) kann problemlos Zeilen mit 120 Zeichen Code auf meinem Laptop-Bildschirm folgen , aber dies ist leider zu breit für 2 Emacs-Puffer auf meinem 15-
Zoll-
103

Erbarmen Sie sich der Programmierer, die Ihre Software später warten müssen, und halten Sie sich an ein Limit von 80 Zeichen.

Gründe, 80 zu bevorzugen:

  • Lesbar mit einer größeren Schrift auf Laptops

  • Lässt Platz, um zwei Versionen zum Vergleich nebeneinander zu stellen

  • Lässt Platz für Navigationsansichten in der IDE

  • Druckt ohne willkürliche Zeilenumbrüche (gilt auch für E-Mails, Webseiten, ...)

  • Begrenzt die Komplexität in einer Zeile

  • Begrenzt die Einrückung, was wiederum die Komplexität der Methoden / Funktionen begrenzt

Ja, es sollte Teil des Codierungsstandards sein.

Sternenblau
quelle
10
Dies sind gute Gründe, die Zeilenbreite auf 80 Zeichen oder weniger zu beschränken. Ich bin wirklich überrascht (enttäuscht), dass Ihre Antwort, die klar durchdacht und richtig ist, nicht mehr Punkte bekommen hat. Zu dieser Liste möchte ich hinzufügen: (1) Horizontales Scrollen macht keinen Spaß. (2) Sie können die Dichte des Codes, an dem Sie arbeiten, erheblich erhöhen, indem Sie diesen Code in mehreren Spalten anzeigen. Eine Menge Immobilien geht verloren, wenn Sie ein paar Linien haben, die sich weit nach rechts erstrecken, wenn die meisten anderen Linien dies nicht tun.
Donnie Cameron
4
ok, aber was passiert, wenn es einen Codeblock mit wenigen Einrückungen gibt? das ist mir passiert und 80 Charaktere machen überhaupt keinen Spaß.
EKanadily
14
Limits the complexity in one lineIch bin mir nicht sicher, warum es besser ist, die Komplexität auf mehrere Zeilen zu verteilen. Es drückt einfach mehr auf deinen mentalen Stapel.
Jonathan
4
Dies ist ein sehr altes Thema. Aber stimmen Sie jetzt noch zu, dass viele Entwickler 27-Zoll-Monitore verwenden :-). Ich meine, wenn das Sehen ein Problem ist, kann ein größerer Bildschirm helfen. Vor 8 Jahren arbeiteten wir noch an 17- oder 20-Zoll-Monitoren und einige sogar mit 4: 3-Auflösungen.
Mathijs Segers
1
@MathijsSegers Unabhängig von der Größe oder Auflösung des Monitors ist es noch komfortabler, Text innerhalb der mittleren 30 Grad Ihres Sichtfelds zu halten. Wenn ich mit mehreren Fenstern arbeite, die in nebeneinander angeordneten Monitoren geöffnet sind, neige ich dazu, den Kopf zu drehen, um von einem zum anderen zu schauen. Eine Person sollte nicht den Kopf drehen oder die Augen ganz drehen müssen, um von einem Ende einer Linie zum anderen zu lesen. So viel schnelle Augen- oder Kopfrotation würde wahrscheinlich Schwindel verursachen, wenn sie den ganzen Tag durchgeführt wird.
Maurice
40

Ich habe kein Studium, aber ich werde meine Erfahrungen erzählen.

Ich finde, dass horizontales Scrollen beim Umgang mit Text mühsam ist . Ich betrachte die Umgebung, in der der Code verwendet wird, und setze basierend auf diesem Kontext Breitenstandards.

Wenn ich beispielsweise in Emacs unter XWindows gearbeitet habe, hat es gut funktioniert, immer zwei Emacs-Fenster nebeneinander zu haben . Das beschränkte sie auf 80 Zeichen, das war also meine maximale Zeilenlänge.

Einmal habe ich in Visual Studio auf einem 1920x1200-Bildschirm gearbeitet. Ich würde es maximieren, wenn alle Werkzeugfenster an einer Seite angedockt wären. Es war noch genügend Platz für zwei nebeneinander angeordnete Editorfenster mit etwa 100 Zeichen vorhanden.

Ich finde auch, dass die längsten Zeilen von Methodenaufrufen mit langen Parameterlisten stammen . Dies ist manchmal ein Code-Geruch : Vielleicht sollte die Methode überarbeitet werden .

Wenn Sie und Ihre Co-Programmierer hochauflösende Bildschirme und scharfes Sehvermögen haben, verwenden Sie auf jeden Fall eine kleine Schrift und lange Zeilen. Umgekehrt benötigen Sie möglicherweise kurze Leitungen.

Jay Bazuzi
quelle
1
plus eins für die "scharfen Augen", weil wirklich das, was mit mir passiert ist.
EKanadily
25

Normalerweise verwende ich 120-150, sofern die Firma nichts anderes beschreibt. Es kommt aber auch auf die Art des Codes an:

  • Ich verwende (fast) nie mehrere Anweisungen in einer Zeile
  • Ich verwende nur lange Linien (> 12), wenn Linien, die ähnlich aussehen, ausgerichtet und nicht unterbrochen werden können.
  • Ich benutze immer genug Leerzeichen / Klammern usw.
  • Ich bevorzuge längere Variablennamen gegenüber kürzeren Namen

Bis vor ein paar Jahren war ich auf 100 beschränkt, aber jetzt werden normalerweise Breitbildschirme verwendet, und hochauflösende Monitore 120 sind sogar auf Laptops zu sehen (die ich kaum benutze).

Der Vergleich eines Bildschirms mit einem Buch ist nicht wirklich gut, da ein Buch mehr vertikalen Raum und ein Bildschirm mehr horizontalen Raum hat. Ich versuche immer eine Funktion max zu halten. ein sichtbarer Bildschirm lang.

Michel Keijzers
quelle
6
Wie funktionieren 120-150 Zeichen pro Zeile, wenn mehrere Fenster nebeneinander geöffnet sind? Halten Sie viele Code-Editor-Fenster nebeneinander geöffnet? - Auf meinem 30-Zoll-Monitor kann ich 3 Fenster nebeneinander haben, wenn ich meine Zeilen auf 97 Zeichen / Zeile beschränke.
KajMagnus
1
Ich codiere auf einem großen Display und ich mag auch größere Mengen. Ich strebe 110-130 an. Eines meiner Hauptziele ist die Lesbarkeit und die Aufteilung von Aussagen in 2-3 Zeilen ist meiner Meinung nach manchmal weniger lesbar. Manchmal gehe ich auch zu 500-1000, um Junk zu verbergen, den ich nicht sehen möchte, z. B. einige Kommentare, deaktivierten Code und einige fest codierte Werte. Ich denke, es hängt auch vom Programmierer ab. Wenn die meisten Codierer mit 80 arbeiten, ist es am besten, dies zu erreichen, wenn Sie mit gemeinsam genutztem Code arbeiten.
Sunsetquest
9

Vielleicht sind die 80 Zeichen auch ein guter Punkt, um diese schlechten Getterketten zu vermeiden:

object.getFoo().getBar().getFooBar().get ...

Wenn Sie es auf 80 Zeichen beschränken, würde vielleicht jemand diese Variablen lokalisieren und eine Nullprüfung usw. durchführen, aber vielleicht würden die meisten Programmierer sie in die nächste Zeile einschließen lassen. ich weiß es nicht

Abgesehen davon sind 80 Charaktere großartig, wie Starblue erwähnt. Dies sollte auf jeden Fall in die Kodierungsstandards eingehen.

Christopher Klewes
quelle
4
Zu Ihrer Information, eine übermäßige Verkettung von Methoden wie diese ist als Zugwrack-Anti-Muster bekannt .
Dennis
4

Ohne Berücksichtigung von Hardwareeinschränkungen und Unterschieden beim Lesen von Code im Vergleich zur natürlichen Sprache sehe ich drei Hauptgründe, um Zeilen auf etwa 80 Zeichen zu beschränken.

  1. Menschliche Augäpfel sind rund, nicht wirklich schmal und breit, und der größte Teil ihrer Auflösung liegt in der Mitte . Wenn Sie stundenlang lesen, ist es viel bequemer, die Augen in kurzen Bögen zu fegen und bei Bedarf eine Bildlaufleiste zu verwenden. Ich kenne keine formale Studie, die sich speziell auf die Lesbarkeit von Code bezieht, aber nach meinen eigenen Beobachtungen nehmen 100 Zeichen etwa 1/3 meines horizontalen Feldes ein, wenn der Monitor 2 Fuß entfernt ist und der Text eine 10pt-Monospaced-Schrift hat oder etwa 60 Grad ( außerhalb der 30 Grad oder so, wo die Auflösung aller unserer Augen liegt ).
  2. Die meisten Menschen verwenden bei der Arbeit einen großen Monitor, damit sie mehrere Dinge sehen können, ohne hin und her zu klicken, und nicht, um eine Sache wirklich groß zu sehen.
  3. Kürzere Zeilen sind weniger komplex, was einen Entwickler hoffentlich dazu zwingt, seinen Code in besser verdauliche Einheiten aufzuteilen.
Maurice
quelle
3

Ich erinnere mich noch genau daran, dass ich irgendwo gelesen habe (ich glaube, es war in der agilen Dokumentation ), dass die Breite eines Dokuments für eine optimale Lesbarkeit etwa zwei Alphabete oder 60-70 Zeichen betragen sollte. Ich denke, die Linienbreite der alten Terminals ist teilweise auf diese alte typografische Regel zurückzuführen.

Lindelof
quelle
3

Die Option für den rechten Rand soll Ihnen die Breite der Seite anzeigen, wenn Sie den Code drucken möchten. Sie hat bereits zuvor angegeben, dass sie auf 80 festgelegt wurde, da die Zeilenlänge in der Vergangenheit vor der grafischen Benutzeroberfläche bis zum Stempeln so war Karten.

Ich habe kürzlich in einem Blog eine Empfehlung gesehen (ich kann mich nicht erinnern, welches Blog), die IDE-Schriftgröße zu erhöhen, um die Codequalität zu verbessern. Die Logik dahinter ist, dass Sie kürzere Zeilen schreiben, wenn weniger Code auf den Bildschirm passt Shouter-Funktionen.

Meiner Meinung nach erleichtern kürzere Zeilen das Lesen und Debuggen des Codes. Deshalb versuche ich, die Zeilen kurz zu halten. Wenn Sie ein Limit festlegen müssen, damit Sie besseren Code schreiben, wählen Sie, was für Sie funktioniert - auch wenn Sie produktiver sind Längere Zeilen können die Seitengröße und den Code nur auf einem breiten Bildschirm erhöhen.

Nir
quelle
1

Wie einige Leute in anderen Antworten darauf hingewiesen haben, ist der Grund für die Beschränkung auf 80 Zeichen teilweise historisch (Lochkarten, kleine Bildschirme, Drucker usw.) und teilweise biologisch (um zu verfolgen, in welcher Zeile Sie sich befinden, ist es im Allgemeinen gut, das Ganze sehen zu können Linie, ohne den Kopf drehen zu müssen).

Denken Sie jedoch daran, dass wir immer noch Menschen sind und Werkzeuge entwickeln, um unsere eigenen Einschränkungen zu lösen. Ich schlage vor, Sie ignorieren die gesamte Debatte über die Zeichenbeschränkung und schreiben einfach Dinge, die unabhängig von ihrer Länge sinnvoll sind, und verwenden eine IDE oder einen Texteditor, mit denen Sie die Zeilen richtig verfolgen können. Unter Verwendung des gleichen Arguments für die Einrückung in der Debatte zwischen Registerkarten und Leerzeichen sowie der Breite der Einrückungen schlage ich vor, dass Sie eine Einrückungsmarkierung (am häufigsten die Registerkarte) verwenden und nur die Benutzer ihre eigene IDE oder Texteditoren konfigurieren, um sie anzuzeigen wie sie es für sie am bequemsten finden.

Das Festhalten an einer festen Anzahl von Zeichen pro Zeile macht die Sache für alle außer der Zielgruppe immer schlimmer. Das heißt, wenn Sie den Code niemals teilen werden, niemals; dann gibt es wirklich keinen Grund, diese Diskussion überhaupt zu beginnen. Wenn Sie den Code freigeben möchten, sollten Sie die Leute wahrscheinlich selbst entscheiden lassen, was sie wollen, anstatt ihnen Ihre (oder andere) Ideale aufzuzwingen.

Jonas Lihnell
quelle
0

Nach meinem besten Wissen wird das 80-Zeichen als Codierungsstandard verwendet, um die Kompatibilität mit Befehlszeileneditoren zu gewährleisten (die Standard-Terminalbreite beträgt normalerweise 80 Zeichen). Bei modernen IDEs und großen Bildschirmauflösungen sind 80 Zeichen wahrscheinlich nicht "optimal", aber für viele Entwickler ist die Lesbarkeit im Terminal unerlässlich. Aus diesem Grund ist es unwahrscheinlich, dass die Breite von 80 Zeichen bald als De-facto-Standard für die Codebreite ersetzt wird. Und um Ihre letzte Frage zu beantworten: Ja, die Codebreite sowie alle anderen Merkmale, die die Lesbarkeit Ihres Codes beeinträchtigen, sollten in Ihren Codierungsstandards berücksichtigt werden.


quelle