Stand: 2016-03-05
Richtig lange Zeilen
Sollte Quelltext eine maximale Zeilenlänge haben? Und wenn ja: Wie lang sollten Zeilen höchstens sein?
Inhalt
Warum begrenzen?
In Zeiten großer Monitore vertreten einige Entwickler die Meinung, dass man keine Begrenzung der Zeilenlänge mehr bräuchte, weil ja auch lange Zeilen komplett auf den Monitor passen würden. Aber abgesehen davon, dass es immer wieder Zeilen gibt, die doch nicht ohne horizontales Scrollen drauf passen, gibt es ein paar praktische Gründe für die Begrenzung der Zeilenlänge.
- Lesbarkeit: Das Auge kann kurze Zeilen schneller erfassen und schneller von Zeile zu Zeile springen.
- Anweisungen pro Zeile: Lange Zeilen enthalten oft zu viel Logik.
- Anzeige mehrerer Dateien: Beim Auflösen von Konflikten werden bis zu drei Spalten nebeneinander dargestellt.
- Optimale Platznutzung: Der Textbereich in der Entwicklungsumgebung kann auf die festgelegte Größe beschränkt und der restliche Platz sinnvoll genutzt werden.
- Betrachtung auf kleinen Monitoren: Auf dem Notebook können sehr lange Zeilen nicht vollständig dargestellt werden.
Welche Länge ist die richtige?
Die Style Guides verschiedener Programmiersprachen begrenzen die Zeilenlänge auf folgende Werte:
Konvention | Maximale Zeilenlänge |
---|---|
Google Java Style | 80 oder 100 |
Google C++ Style Guide | 80 |
Python | 79 |
Perl Best Practices | 78 |
C Code Style Guidelines | 80 |
Scala Style Guide | ca. 80 |
Airbnb's Ruby Style Guide | 100 |
PHP (PEAR) | 75 - 85 |
JavaScript (jQuery) | 80 empfohlen, max 100 |
Mozilla Coding style | 80 |
D Style | 80 empfohlen, max 120 |
Die traditionellen 80 Zeichen sind also nach wie vor weit verbreitet. Als Argumente dafür werden häufig die gute Lesbarkeit und, aus meiner Sicht eher exotische, technische Beschränkungen angeführt. In gedruckten Werken sind die Zeilen zu Gunsten der Lesbarkeit meistens noch ein Stück kürzer als 80 Zeichen. Aber ist Quelltext nicht etwas völlig anderes als der Text eines Buches? Und sind so kurze Zeilen auf heutigen Monitoren überhaupt noch sinnvoll?
Tatsächlich stammt die 80-Zeichen-Konvention von den Lochkarten aus der Computer-Steinzeit.
Die übliche maximale Zeilenlänge von knapp 80 Zeichen in E-Mails und Textdateien geht auf dieses Lochkartenformat zurück, ebenso das Darstellungsformat von meist 80 Zeichen Breite auf den Terminals (oder Terminal-Emulationen) von IBM-Großrechnern, welche u. a. als Datenerfassungsgeräte die Lochkarten später verdrängten.
Für gute Lesbarkeit wie bei einem Buch wären 80 Zeichen prinzipiell vielleicht auch für Quelltext nicht schlecht, aber Quelltext ist eben kein Buch! Im Quelltext gibt es zahlreiche Einrückungen, die oft mehrere Ebenen tief sind, und lange Konstrukte, die es so in keinem Buch geben würde. Wenn eine Zeile wie die folgende dann auch noch ein oder zwei Ebenen eingerückt ist, sind 80 Zeichen schnell erreicht.
private static final Map<String, List<String>> synonyms = new HashMap<>();
Kurze Zeilen können außerdem dazu verleiten, weniger sprechende oder gar kryptische Namen im Code zu verwenden.
Meine Empfehlung: 100 Zeichen. Das ist gut lesbar, erspart allzu viele künstliche Umbrüche und ermöglicht auf großen Monitoren die Anzeige von drei Dateien nebeneinander. Nicht zu unterschätzen ist auch der Widerstand von Kollegen, die bisher Zeilen mit 200 und mehr Zeichen geschrieben haben! 80 Zeichen sind für die eine noch viel härtere Einschränkung.
Praktische Hinweise
Damit das Limit auch tatsächlich eingehalten wird, sollten alle Entwickler in ihrer Entwicklungsumgebung die Grenze als Linie einblenden.
Wenn es für die Entwicklungsumgebung möglich ist, Code-Konventionen festzulegen, sollte man auch dort den Wert eintragen. So wird die maximale Zeilenlänge auch gleich beim automatischen Formatieren von Code verwendet.
Sinnvoll ist dann noch, festzulegen, wie Code umgebrochen werden soll, damit die einheitliche Zeilenlänge nicht zu uneinheitlicher Formatierung führt.
Und als letzten Schritt sollte die Einhaltung der Zeilengrenze durch eine entsprechende Regel auf dem Continuous Integration Server geprüft werden. Eine abgeschwächte Variante ist, nur neue oder geänderte Zeilen zu prüfen.