Funktionen werden nicht nur verwendet, um die Doppelung von Code zu minimieren, sondern auch, um eine lange Funktion in kleinere Funktionen aufzuteilen, um die Lesbarkeit zu verbessern und um den Code selbst zu kommentieren. Diese Verstärkung ist jedoch nicht direkt umgekehrt proportional zur Anzahl der LOCs pro Funktion oder Methode. Andernfalls hätten wir Tonnen von Funktionen, die alle nur eine oder zwei Codezeilen enthalten.
Dies führte mich zu der Frage : Gibt es eine optimale Anzahl von LOCs pro Funktion? Wenn ja, was ist das und weicht es zwischen den Sprachen ab?
Antworten:
Anstelle der Anzahl der Zeilen würde ich als Kriterium verwenden, dass jede Funktion nur eines tun sollte und es gut macht.
quelle
Eine alte Faustregel besagt, dass eine Funktion ohne Scrollen vollständig auf dem Bildschirm sichtbar sein sollte.
Die Grundidee ist, dass, wenn Sie nicht die gesamte Funktion auf einmal betrachten können, die Funktion überkomplex ist und Sie sie in grundlegendere Teile aufteilen sollten.
Diese Regel ist zwar sehr praktisch und nützlich, die formale Regel lautet jedoch, dass Sie in einer Funktion nur einen einzigen logischen Schritt beibehalten sollten. Eine Funktion erledigt nur einen elementaren Job. Wenn Sie den Job in mehrere elementare Teile aufteilen können, muss die Funktion aufgeteilt werden.
quelle
Da ist gar nichts.
Bildschirme werden größer, Schriftgrößen kleiner. Faustregeln funktionieren nicht so gut, wenn Menschen unterschiedlich große Daumen haben.
Sei präzise. Wenn Ihre Funktion mehrere Aufgaben ausführt, ist es wahrscheinlich eine gute Idee, sie in kleinere aufzuteilen.
quelle
Smalltalk hat eine etwas ungewöhnliche Art, die Größe von Methoden zu reduzieren. Wenn Sie Code schreiben, schreiben Sie ihn in einem Widget, das als Browser bezeichnet wird. Ein Browser besteht aus zwei Hauptteilen, die horizontal unterteilt sind. Ihr Code geht in die untere Hälfte.
Standardmäßig ist ein Browser nicht sehr groß. Sie können 5 oder 6 Zeilen einfügen, bevor Sie mit dem Scrollen beginnen müssen. Das Scrollen ist natürlich etwas irritierend.
In Smalltalk "fordert" die Umgebung Sie daher auf, kurze Methoden mit einer Länge von höchstens 6 Zeilen zu schreiben. (Das ist normalerweise genug; Smalltalk ist eine ziemlich knappe Sprache.)
quelle
Die ideale Anzahl von Codezeilen in einer Methode ist variabel. Grundsätzlich möchten Sie nur so viel Code schreiben, wie im Kontext der Funktionsdefinition erforderlich ist. Ich betrachte dies als eine Art Prinzip der Einzelverantwortung , das nur auf eine Methode anstatt auf eine Klasse angewendet wird.
Wenn eine Methode viel Logik und eine Reihe von Schritten zu erledigen hat, ist es sinnvoll, die Methode in mehrere einzelne Schritte aufzuteilen. Jeder dieser Schritte würde nach Bedarf in neue Methoden extrahiert.
Je weniger jede Methode verwendet wird, desto einfacher ist ihre Definition und desto einfacher ist das Verstehen und Verwalten. Es ist nichts falsch daran, Hunderte von Methoden zu haben, wenn Sie sie brauchen. In Übereinstimmung mit der SRP, die ich zuvor erwähnt habe, wird es auch einfacher, neue Klassen zu extrahieren, wenn die Methoden in kleinere und handlichere Teile zerlegt wurden.
quelle
Die Antwort ist natürlich 42 .
Wichtig zu beachten: Keine Funktion kann jemals die SRP verletzen , oder Sie müssen sich der spanischen Inquisition stellen .
Ein paar Tipps, wie Sie die Anzahl der Zeilen reduzieren können:
quelle
Hier sind einige Hinweise:
Wenn Sie Probleme beim Schreiben des Kommentars haben, in dem der Zweck und die Verwendung der Funktion erläutert werden, ist dieser zu lang.
Wenn Sie versucht sind, einen Kommentar zu verfassen, der die Aktivität eines Codeabschnitts in der Funktion erläutert, ist die Funktion zu lang.
Wenn Sie Code aus einer anderen Funktion einfügen, sind beide zu lang (extrahieren Sie diesen Code als separate Funktion).
Wenn Sie eine Codierungskonvention benötigen, um Klassendatenelemente von lokalen Variablen zu trennen, ist die Funktion zu lang und die Klasse hat zu viele Elemente.
Wenn Sie sich beim Lesen einer Funktion Notizen machen müssen, ist diese zu lang.
Es ist nicht unbedingt eine schlechte Sache, Tonnen von Funktionen zu haben, die jeweils nur eine oder zwei Zeilen lang sind. Ich stellte fest, dass diese kleinen Funktionen viel häufiger wiederverwendet wurden, als ich ursprünglich erwartet hatte.
quelle