Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:softwareentwicklung:ptb2023:13:index

13. Formatierung: Layout und Stil

Themen
Warum ist Code-Formatierung wichtig?
Vertikale Formatierung
Horizontale Formatierung
Konsistenz: Konventionen und automatische Codeformatierung
Folien
PDF
Glossar
PDF


Zentrale Aspekte

  • Codeformatierung ist zu wichtig, um sie zu ignorieren –
    oder sie dogmatisch zu behandeln.
  • Formatierung offenbart die Sorgfalt und Professionalität,
    die ein Programmierer in seine Arbeit investiert hat.
  • Formatierung erhöht die Les- und Wartbarkeit von Code.
    Die investierte Disziplin überlebt den eigentlichen Inhalt.
  • Zusammenhänge und getrennte Konzepte sollten sich in
    horizontaler und vertikaler Formatierung widerspiegeln.
  • Konsistenz ist wichtiger als der konkrete Inhalt.
    Regeln sollten vom ganzen Team akzeptiert werden.

Fragen zur Vertiefung und Wiederholung

Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.

  • Warum ist Codeformatierung so wichtig?
  • Was ist entscheidend bei Konventionen für die Codeformatierung?
    Wie lässt sich die Umsetzung am Ehesten erreichen?
  • Was unterscheidet Idiome von Konventionen?
    Warum ist die Verwendung von Idiomen nicht optional?
  • Welchen Zusammenhang zwischen Codeformatierung,
    Konventionen und Editoren/IDEs sehen Sie?
  • Warum sollte sich die Einhaltung von Konventionen
    für Codeformatierung automatisch überprüfen lassen?

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 in der Vorlesung 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-rc-2008]}, Kapitel 5. Weitere hilfreiche Erläuterungen zur Formatierung von Quellcode finden sich in Kapitel 31 in {[mcconnell-s-2004]} und, wenn auch eher versteckt, in Kapitel 1 in {[kernighan-bw-1999]}. 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-bw-1978]}, 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-w-2000]}, 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-hp-2010,forssman-f-2014,willberg-hp-2007]}.

Eine knappe Einführung in Idiome in Programmiersprachen in Abgrenzung zu Entwurfsmustern (design patterns, vgl. Lektion 17) findet sich in Kapitel 4 in {[buschmann-f-1996]}. Die Python-Community betont die Bedeutung sprachlicher Idiome (pythonic code). Beispiele spezifisch für Python liefern Effective Python {[slatkin-b-2015]}, das Python Cookbook {[beazley-d-2013]} und Python Tricks {[bader-d-2019]}.

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.

<bibtex bibliography> sort=true </bibtex>

Werkzeuge zur automatischen Codeformatierung

Es gibt für sehr viele Programmiersprachen Werkzeuge, die Code automatisch formatieren können, und es gibt IDEs, die entweder diese Werkzeuge unterstützen oder selbst die Funktionalität bereitstellen. Entscheidend für diese Werkzeuge ist immer die Existenz einer Liste eindeutiger Regeln für die Codeformatierung.

Python: Black

Für Python gibt es mit PEP 8 eine Reihe sehr klarer Regeln, wie Code formatiert sein sollte, wenn auch nicht ausreichend genau für ein Werkzeug zur automatischen Codeformatierung. Ein Werkzeug, das sich in der Python-Gemeinde relativ großer Beliebtheit und Verbreitung erfreut: Black (Dokumentation). Wenn man sich für die Verwendung des Werkzeugs entscheidet, bindet man es sinnvoller Weise in den Git-Workflow ein (z.B. über einen pre-commit-Hook).

PHP: PHP Quality Assurance

Für PHP gibt es ebenfalls eine ganze Reihe an Werkzeugen, viele davon unter dem Dach der PHP Quality Assurance zusammengefasst. DokuWiki nutzt z.B. PHP Code Beautifier and Fixer (phpcbf) im Zusammenspiel mit Rector (Dokumentation) für automatisches Refactoring.

de/lehre/softwareentwicklung/ptb2023/13/index.txt · Zuletzt geändert: von 127.0.0.1