Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2023:12:index

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
PDF
Glossar
PDF


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:

I find that when someone's taking time to do something right in the present, they're a perfectionist with no ability to prioritize, whereas when someone took time to do something right in the past, they're a master artisan of great foresight.
Abbildung 1: 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…
Don't forget the time you spend finding the chart to look up what you save. And the time spent reading this reminder about the time spent. And the time trying to figure out if either of those actually make sense. Remember, every second counts toward your life total, including these right now.
Abbildung 2: 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…
'Automating' comes from the roots 'auto-' meaning 'self-', and 'mating', meaning 'screwing'.
Abbildung 3: 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…

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
de/lehre/programmierkonzepte/ws2023/12/index.txt · Zuletzt geändert: 2023/11/30 16:43 von till