Nebenbei: Ich habe dies als Antwort auf Dallins Frage geschrieben (jetzt geschlossen), aber ich denke immer noch, dass es für jemanden hilfreich sein könnte
Ich denke, dass der Grund für die Zerstäubung von Funktionen 2-fach ist und wie @jozefg erwähnt, von der verwendeten Sprache abhängt.
Trennung von Bedenken
Der Hauptgrund dafür ist, verschiedene Codeteile getrennt zu halten, sodass jeder Codeblock, der nicht direkt zum gewünschten Ergebnis / zur gewünschten Absicht der Funktion beiträgt, ein separates Problem darstellt und extrahiert werden kann.
Angenommen, Sie haben eine Hintergrundaufgabe, die auch einen Fortschrittsbalken aktualisiert. Die Fortschrittsbalkenaktualisierung steht nicht in direktem Zusammenhang mit der ausgeführten Aufgabe. Sie sollte daher extrahiert werden, auch wenn dies der einzige Code ist, der den Fortschrittsbalken verwendet.
Angenommen, Sie haben in JavaScript eine Funktion getMyData (), die 1) eine Soap-Nachricht aus Parametern erstellt, 2) eine Dienstreferenz initialisiert, 3) den Dienst mit der Soap-Nachricht aufruft, 4) das Ergebnis analysiert, 5) das Ergebnis zurückgibt. Scheint vernünftig, ich habe genau diese Funktion viele Male geschrieben - aber das könnte wirklich in 3 private Funktionen aufgeteilt werden, einschließlich Code für 3 & 5 (falls das der Fall ist), da keiner der anderen Codes direkt für den Erhalt von Daten vom Service verantwortlich ist .
Verbessertes Debugging
Wenn Sie vollständig atomare Funktionen haben, wird Ihr Stack-Trace zu einer Aufgabenliste, die den gesamten erfolgreich ausgeführten Code auflistet, dh:
- Meine Daten abrufen
- Servicereferenz initialisieren
- Analysierte Serviceantwort - FEHLER
Es wäre viel interessanter, herauszufinden, dass beim Abrufen der Daten ein Fehler aufgetreten ist. Einige Tools sind jedoch noch nützlicher für das Debuggen detaillierter Anrufbäume, z. B. Microsoft Debugger Canvas .
Ich verstehe auch Ihre Bedenken, dass es schwierig sein kann, auf diese Weise geschriebenem Code zu folgen, da Sie am Ende des Tages eine Funktionsreihenfolge in einer einzelnen Datei auswählen müssen, da Ihr Aufrufbaum dann viel komplexer wäre . Aber wenn Funktionen gut benannt sind (Intellisense erlaubt mir, 3-4 Wörter in Groß- und Kleinschreibung in einer beliebigen Funktion zu verwenden, ohne mich zu verlangsamen) und mit einer öffentlichen Schnittstelle am Anfang der Datei strukturiert, liest sich Ihr Code wie ein Pseudocode, der Dies ist bei weitem der einfachste Weg, eine Codebasis auf hohem Niveau zu verstehen.
Zu Ihrer Information: Dies ist eines der Dinge, bei denen es keinen Sinn macht, Code atomar zu halten, es sei denn, Sie stimmen unbarmherzig damit überein, IMHO, was ich nicht bin.