Inhaltsverzeichnis
12. Funktionen und Methoden
- Themen
- Länge: So kurz wie möglich
- Fokus: Immer nur eine Aufgabe
- Parameter: Je weniger, desto besser
- Modularität: Don't Repeat Yourself
- Folien
- Glossar
Zentrale Aspekte
- Funktionen sollten so kurz wie möglich sein.
Übersichtlichkeit erleichtert intellektuelle Beherrschbarkeit. - Funktionen sollten genau eine Sache tun, die aber richtig.
Unix-Prinzip: „Do one thing, and do it well.“ - In einer Funktion sollte nur eine Abstraktionsebene vorherrschen.
Das fördert die Übersichtlichkeit und Verständlichkeit. - Je weniger Parameter eine Funktion hat, desto besser.
Mehr als drei Parameter sollten nie auftreten. - Doppelungen im Code sollten grundsätzlich vermieden werden:
„Don't Repeat Yourself“ (DRY).
Fragen zur Vertiefung und Wiederholung
Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.
- Welche Gründe gibt es, Funktionen möglichst kurz zu halten?
- Wie lässt sich feststellen, ob eine Funktion mehr als eine Aufgabe erfüllt?
- Was sind Nebenwirkungen und warum sollte man sie auf jeden Fall vermeiden?
- Was ist das Problem zu vieler Parameter einer Funktion? Wie lässt es sich umgehen?
- Mit welchen Argumenten lässt sich das Schreiben modularen Codes motivieren?
Grenzen sinnvoller Abstraktion
Die Frage, die sich immer stellt: Wann ist eine sinnvolle Grenze der Abstraktion erreicht? Das Gegenprinzip zu DRY („Don't repeat yourself“) lautet nicht umsonst YAGNI („You ain't gonna need it“). Letztlich ist das immer eine Einzelfallentscheidung. Wenig überraschend hat Randall Munroe in seinem XKCD-Webcomic diese Frage mehrfach aufgegriffen:



Weiterführende Literatur
Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.
Funktionen sind ein wesentlicher Aspekt von sauberem und lesbarem Code. Entsprechend prominient wird die Thematik von Robert C. Martin in seinem Buch „Clean Code“ [Martin, 2008Martin, Robert C. (2008): Clean Code. A Handbook of Agile Software Craftmanship, Prentice Hall, Upper Saddle River, New Jersey] und dort in Kapitel 3 behandelt.
Weitere gute Hinweise finden sich in Kapitel 7 in [McConnell, 2004McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington].
Ein sehr lesenswertes Buch ist „The Art of UNIX Programming“ von Eric S. Raymond [Raymond, 2004Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston]. Hier findet der geneigte Leser sehr viele Beispiele und eine solide Einführung in die Grundprinzipien von UNIX, neben vielen Tipps für wirklich modulare Programme.
- 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