Diese Fragen dienen der persönlichen Beschäftigung mit der Thematik, werden aber nicht separat in der Vorlesung besprochen.
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:
<figure fig:xkcd-974>
<caption>XKCD 974: The General Problem. © Randall Munroe, CC-By-NC 2.5, https://xkcd.com/974/. Man beachte hier besonders (wie bei jedem xkcd-Comic) den zusätzlichen Text, der als „Tooltip“ erscheint, wenn man den Mauszeiger über das Bild bewegt…</caption>
</figure>
<figure fig:xkcd-1205>
<caption>XKCD 1205: Is It Worth the Time?. © Randall Munroe, CC-By-NC 2.5, https://xkcd.com/1205/. Man beachte hier besonders (wie bei jedem xkcd-Comic) den zusätzlichen Text, der als „Tooltip“ erscheint, wenn man den Mauszeiger über das Bild bewegt…</caption>
</figure>
<figure fig:xkcd-1319>
<caption>XKCD 1319: Automation. © Randall Munroe, CC-By-NC 2.5, https://xkcd.com/1319/. Man beachte hier besonders (wie bei jedem xkcd-Comic) den zusätzlichen Text, der als „Tooltip“ erscheint, wenn man den Mauszeiger über das Bild bewegt…</caption>
</figure>
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-rc-2008]} und dort in Kapitel 3 behandelt.
Weitere gute Hinweise finden sich in Kapitel 7 in {[mcconnell-s-2004]}.
Ein sehr lesenswertes Buch ist „The Art of UNIX Programming“ von Eric S. Raymond {[raymond-es-2004]}. 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.
<bibtex bibliography> sort=true </bibtex>