Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2018:10:index

10. Code

Themen
Ziel der Programmierung: Intellektuelle Beherrschung komplexer Zusammenhänge
Die Aufgabe von Code: Kommunikation
Software-Entropie
Folien
PDF
Glossar
PDF


Zentrale Aspekte

  • Ziel der Programmierung:
    intellektuelle Beherrschung komplexer Zusammenhänge
  • Programmierer kommunizieren durch ihren Code.
    Man kann nicht nicht, nur unzureichend kommunizieren.
  • Die Qualität von Code nimmt über die Dauer der Entwicklung
    eines Projekts meist ab (Software-Entropie).
  • Die Lösung ist nicht der große Neuentwurf,
    sondern die kontinuierliche Verbesserung im Kleinen.
  • Code-Qualität ist eine Frage der persönlichen Einstellung
    und Wertschätzung des Lesers/Nutzers.

Fragen zur Vertiefung und Wiederholung

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

  • Was ist das inhärente Problem jedes größeren Softwareprojekts? Welche Zielstellung ergibt sich daraus für Programmierkonzepte?
  • Was ist die primäre Aufgabe von Code (neben der korrekten Ausführung)?
  • Warum ist der große Neuentwurf meist keine Lösung für das Problem der Software-Entropie? Was wäre eine Alternative?

Weiterführende Literatur

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

Es gibt viele Bücher, die sich mit Codequalität und seinen diversen Aspekten beschäftigen. Ein Buch, das sich explizit mit sauberem Code befasst, ist „Clean Code“ von Robert C. Martin [Martin, 2008Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey]. Aus einer ähnlichen Perspektive gehen Andrew Hunt und David Thomas in ihrem Buch „The Pragmatic Programmer“ [Hunt, 1999Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston] auf diese Aspekte ein. Hierher stammt auch der Verweis auf die „Broken-Window-Theorie“.

Ein sehr umfangreiches Buch, das nicht aus dem Dunstkreis der agilen Methoden kommt, ist Steve McConnells „Code Complete“ [McConnell, 2004McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington], mit ca. 1000 Seiten allerdings eher schwergewichtig.

Sehr kurz und knapp und mit einem klaren Fokus auf C, C++ und Java ist „The Practice of Programming“ von Brian Kernighan und Rob Pike [Kernighan, 1999Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston]. Viele gute Hinweise finden sich auch in „The Art of UNIX Programming“ von Eric S. Raymond [Raymond, 2004Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston], hier sicherlich vor dem Hintergrund der UNIX-Programmierung, wie der Buchtitel schon verrät.

Spezifisch für den Python-Kontext geschrieben und bewusst nicht abwägend, sondern direkt (opinionated) ist [Reitz, 2016Reitz, Kenneth; Schlusser, Tanya (2016): The Hitchhiker's Guide to Python, O'Reilly, Sebastopol]. Das entsprechende Kapitel fasst dafür auf sehr knappem Raum viele gute Regeln zusammen.

Ein Klassiker ist das Buch The Elements of Programming Style von Kernighan und Plaugher [Kernighan, 1978Kernighan, Brian W.; Plauger, P. J. (1978): The Elements of Programming Style, McGraw-Hill, New York], das nicht nur mit seinem Titel eine Reminiszenz an The Elements of Style von Strunk und White [Strunk, 2000Strunk, William, Jr.; White, E. B. (2000): The Elements of Style, Longman, New York] ist. An diesen beiden Büchern sieht man, dass Klarheit im Ausdruck und guter Stil zeitlos und unabhängig von der konkreten (Programmier-)Sprache sind – und die wesentlichen Zutaten bereits vor Jahrzehnten bekannt waren. Der Strunk&White wird in der Python-Gemeinde als Referenz für die sprachliche Qualität von Kommentaren herangezogen.

Darüber hinaus gibt es viele hilfreiche andere Bücher. Nichtnennung bedeutet nicht, dass sie schlechter, sondern ggf. nur, dass sie dem Autor nicht bekannt sind.

  • Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston
  • Kernighan, Brian W.; Plauger, P. J. (1978): The Elements of Programming Style, McGraw-Hill, New York
  • Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston
  • Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey
  • McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington
  • Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston
  • Reitz, Kenneth; Schlusser, Tanya (2016): The Hitchhiker's Guide to Python, O'Reilly, Sebastopol
  • Strunk, William, Jr.; White, E. B. (2000): The Elements of Style, Longman, New York
de/lehre/programmierkonzepte/ws2018/10/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1