6 Stimmen

Wann sollte ich eine Funktion unterbrechen?

Es ist ratsam, eine lange Funktion in eine Hauptfunktion und Hilfsfunktionen zu unterteilen.

Ich weiß, dass außerhalb des Moduls nur die Hauptfunktion aufgerufen wird, aber ihre große Länge kann sich als einschüchternd erweisen.

In den Lehrbüchern ist die Anzahl der Zeilen begrenzt, aber ich halte das für zu starr.

P.S.: Ich programmiere in Python und muss eingehende Nachrichten verarbeiten. Die Funktion gibt ein Tupel zurück, das die Nachricht enthält, aber in den internen Datentypen von Python. Sie können also für jeden Nachrichtentyp etwas unabhängigen Code sehen.

Doppelte Frage

Wann ist eine Funktion zu lang?

5voto

Paul Tomblin Punkte 172816

Ich bin kein großer Fan davon, eine Funktion unnötigerweise in mehrere Funktionen aufzuteilen. Wenn es Dinge gibt, die als eigenständige logische Einheiten erscheinen, dann sollten Sie diese auf jeden Fall herauslösen und separat betrachten. Aber brechen Sie die Dinge nicht einfach nur um einer Richtlinie wie "eine Seite pro Funktion" oder "N Zeilen pro Funktion" willen auf.

4voto

joeforker Punkte 38123

Schreiben Sie niemals eine Funktion, die, wenn sie auf Endlospapier gedruckt wird, größer ist als Sie selbst.

4voto

cdonner Punkte 35735

Ich denke, Sie müssen das Problem von der anderen Seite her angehen. Denken Sie von unten nach oben. Identifizieren Sie kleine Arbeitseinheiten, so klein wie möglich, und fangen Sie an, Ihren Code auf diese Weise zu komponieren. Sie werden nur dann Probleme mit Spaghetti-Code bekommen, wenn Sie von oben nach unten programmieren und keinen strukturierten Ansatz verfolgen.

Wenn Sie bereits Spaghetti-Code haben und eine Umstrukturierung vornehmen müssen, müssen Sie praktisch von vorne anfangen. Es ist wahrscheinlich mehr Arbeit, bestehenden Spaghetti-Code aufzubrechen, als ihn neu zu schreiben, und das Ergebnis ist möglicherweise nicht so gut.

Ich glaube auch nicht, dass es eine feste Zahl für die Codezeilen in einer Methode geben sollte, aber gut geschriebener Code hat keine Methoden mit mehr als 5 bis 10 Zeilen in den unteren Schichten und 20 bis 30 Zeilen in der Geschäftslogik. Um Ihnen eine Art Metrik zu geben.

3voto

andynormancx Punkte 12861

Eine gute Faustregel lautet: Wenn es nicht auf einen einzigen Bildschirm passt, lohnt es sich Denken aufzuteilen. Aber nur, wenn es Sinn macht, sie aufzuteilen. Einige lange Funktionen sind perfekt lesbar und es macht keinen Sinn, sie sklavisch in mehrere Funktionen aufzuteilen, nur um der Sache willen.

2voto

Ich mag die Faustregel, dass man die Unterfunktion ausgliedern sollte, wenn man sich eine gut Domain-relevanten Namen für ihn.

Wenn jemand die Top-Level-Funktion verstehen kann, ohne die Definition der Unterfunktion nachschlagen zu müssen, haben Sie wahrscheinlich einen Nettogewinn erzielt. (Wenn Sie es jedoch zu weit herunterbrechen, beziehen sich Ihre Namen auf Ihre Implementierungsartefakte und nicht mehr auf die Domäne)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X