Inhaltsverzeichnis

15. Formatierung: Layout und Stil

Themen
Warum ist Code-Formatierung wichtig?
Vertikale Formatierung
Horizontale Formatierung
Konsistenz: Konventionen und automatische Codeformatierung
Glossar
PDF
Kapitel bei Springer
https://link.springer.com/chapter/10.1007/978-3-662-71607-6_15


Zentrale Aspekte

Zusammenfassung

Wenig offenbart so klar die Sorgfalt und Professionalität eines Programmierers wie der Blick in seinen Quellcode. Eine sinnvolle Codeformatierung ist für die Lesbarkeit von Code und damit für dessen Nutzbarkeit und Wartbarkeit essentiell: Codeformatierung ist zu wichtig, um sie zu ignorieren –- oder sie dogmatisch zu behandeln. Die gute Nachricht: Die investierte Disziplin überlebt den eigentlichen Inhalt.

Zusammenhänge und getrennte Konzepte sollten sich in horizontaler und vertikaler Formatierung widerspiegeln. Eine hilfreiche Metapher für die Anordnung vieler kleiner Funktionen ist die der Zeitung: Überschrift, Zusammenfassung und vom Einfachen zum Komplexen. Bei wenigen Programmiersprachen wie Python ist die Einrückung nicht optional, sondern Teil der Syntax, was einige der gröbsten Fehler vermeidet.

Konsistenz ist wichtiger als der konkrete Inhalt von Konventionen. Regeln sollten vom ganzen Team akzeptiert und konsequent befolgt werden. Automatische, ggf. konfigurierbare Werkzeuge zur Codeformatierung, die sich bequem in die Arbeitsabläufe einer Versionsverwaltung integrieren lassen, nehmen hier viel Arbeit ab und ersparen unnötige Diskussionen.

Fragen zur Vertiefung und Wiederholung

Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, es werden aber keine Antworten zur Verfügung gestellt.

Code Obfuscation

Es gibt gerade für die Programmiersprache Perl einen Wettbewerb, funktionierenden Code möglichst unleserlich (aber äußerlich attraktiv) zu gestalten. Ein Beispiel wird im Buch gezeigt (kamelförmiger Code). Auf der Seite https://www.perlmonks.org/ gibt es noch viele weitere Beispiele, oft inklusive der Erklärung, was hinter dem jeweiligen Code steckt. In vielerlei Hinsicht ist das, was dort gezeigt wird, das Gegenteil von sauberem Code (clean code).

Weiterführende Literatur

Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.

Die Ausführungen folgen in weiten Teilen jenen in [Martin, 2008Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey], Kapitel 5. Weitere hilfreiche Erläuterungen zur Formatierung von Quellcode finden sich in Kapitel 31 in [McConnell, 2004McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington] und, wenn auch eher versteckt, in Kapitel 1 in [Kernighan, 1999Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston]. Dass das Thema Formatierung von Quellcode bereits sehr alt ist und auch Sprachen wie FORTRAN IV kein Grund für dessen Vernachlässigung sind, zeigen Kernighan und Plaugher [Kernighan, 1978Kernighan, Brian W.; Plauger, P. J. (1978): The Elements of Programming Style, McGraw-Hill, New York], die (nicht nur) mit dem Titel ihres Buches („The Elements of Programming Style“) direkten Bezug auf den Klassiker der englischen Sprache, den „Strunk und White“ („The Elements of Style“) [Strunk, 2000Strunk, William, Jr.; White, E. B. (2000): The Elements of Style, Longman, New York], nehmen.

Bezüglich der horizontalen Formatierung, insbesondere der Länge von Zeilen, gibt es viele gute Hinweise aus der Typografie. Für Details vgl. die einschlägige Literatur, z.B. [Willberg, 2010Willberg, Hans Peter; Forssman, Friedrich (2010): Lesetypografie, Verlag Hermann Schmidt, Mainz, Forssman, 2014Forssman, Friedrich; de Jong, Ralf (2014): Detailtypografie, Verlag Hermann Schmidt, Mainz, Willberg, 2007Willberg, Hans Peter; Forssman, Friedrich (2007): Erste Hilfe in Typografie, Verlag Hermann Schmidt, Mainz].

Eine knappe Einführung in Idiome in Programmiersprachen in Abgrenzung zu Entwurfsmustern (design patterns, vgl. Lektion 17) findet sich in Kapitel 4 in [Buschmann, 1996Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael (1996): Pattern-Oriented Software Architecture. Volume 1: A System of Patterns, John Wiley & Sons, Chichester]. Die Python-Community betont die Bedeutung sprachlicher Idiome (pythonic code). Beispiele spezifisch für Python liefern Effective Python [Slatkin, 2015Slatkin, Brett (2015): Effective Python, Addison-Wesley, Upper Saddle River, NJ], das Python Cookbook [Beazley, 2013Beazley, David; Jones, Brian K. (2013): Python Cookbook, O'Reilly, Sebastopol, CA] und Python Tricks [Bader, 2019Bader, Dan (2019): Python Tricks, dbader.org, o.A.].

Ein unabhängig von der eingesetzten Programmiersprache durchaus lesenswerter Gestaltungsleitfaden (style guide) für Quellcode ist das Python Enhancement Proposal 8 (PEP 8), grafisch aufbereitet von Kenneth Reitz.