Frage

  

Mögliche Duplizieren:
   Wann ist eine Funktion zu lang?

Ich habe vor kurzem die wenig beneidenswerte Aufgabe der Überprüfung der schlechten Code geschrieben von einem anderen Entwickler und Dokumentation der schlechten Praktiken gegeben worden. (Das ist alles für die Zwecke des Ausstiegs für die Entwickler-Arbeit zu zahlen, anstatt jeder altruistischer Grund, natürlich!)

Die Bewertung Code hat mehrere Verfahren, die viele Zeilen Code sind - die längste fast 600 Linien ist. Ein paar Probleme mit diesem, dass ich gedacht habe von sind Wartbarkeit und Lesbarkeit.

Der Trick ist, dass ich für die Laien rechtfertigen muß, warum dies eine schlechte Praxis ist und wenn möglich wieder mit einem gut angesehen und aktuellem Nachschlagewerk auf. Analogies sind auch gut.

Irgendwelche Ideen?

Duplizieren:? Wann ist eine Funktion zu lang
Duplizieren: Beste Regel für maximale Funktion Größe?

War es hilfreich?

Lösung

Es geht nicht um Codezeilen. Wie Steve McConnell und Bob Martin sagen (zwei ziemlich gute Referenzen auf best Practices-Codierung), ein Verfahren, eine Sache tun soll und nur eine Sache. Doch viele Zeilen Code nimmt, es zu tun, dass eine Sache ist, wie viele Zeilen sollte es haben. Wenn die „eine Sache“ in kleinere Dinge gebrochen werden, jeder von denen, sollte eine Methode hat.

Gute Hinweise Ihre Methode tut mehr als eine Sache:

  • Mehr als ein Niveau von inden in einem Verfahren (gibt zu viele logischen Zweige nur noch eines zu tun)
  • „Absatz Breaks“ - Leerzeichen zwischen logischen Gruppen von Code zeigen das Verfahren mehr als eine Sache
  • tut

Um nur einige zu nennen. Bob Martin sagt auch, es zu halten, um 10. Persönlich ich in der Regel versuchen, für 10 zu schießen, wenn es beginnt knapp 20 bekommen, das ist eine geistige Fahne mehr Aufmerksamkeit auf diese Methode zu zahlen. Aber letztlich ist loc eine schlechte Metrik für so ziemlich alles. Es ist nur ein hilfreicher Indikator, der möglicherweise auf das eigentliche Thema verweisen.

Andere Tipps

Die wirkliche Antwort

Es gibt keine bestimmte Anzahl.

Eine konkrete Antwort

Wenn Sie mit einer gewissen Anzahl an Anwälte oder etwas zu rechtfertigen, herauszufinden, die maximale Anzahl von Zeilen aus, die in Ihrem Geschäft auf einem typischen Entwicklungseditorfenster passen, und diese verwenden.

Allgemeinmedizin

Sie sollten nicht einmal wirklich es betrachtet, dass die Art und Weise, aber es sollte nichts sehr komplex geht in beliebigen Funktion sein.

Jede Arbeitseinheit sollte auf seine eigene Einheit überprüfbare deskriptiv benannte Methode delegiert werden. Tun Sie dies und alle Ihre Methoden am Ende klein und lesbar, ohne jemals zu zählen Linien ......

Der größte Täter ich sehe, ist 3-4 + boolean Bedingungen in der Mitte einer if-Anweisung explodierte. Wickeln Sie alles, was oben in einem boolean mit einem guten Namen, dann einpacken alle Stücke, die es ausmachen, die in ihrem eigenen komplex sind.

Zunächst einmal ist zu beachten, dass die Längenbeschränkung von der üblichen Metrik völlig getrennt ist, die „funktioniert die Funktion nicht nur eine Sache, und tut es auch?“ Ist Wenn die Antwort auf diese Frage ja nicht ist, ist die Funktion wahrscheinlich nicht gut sowieso, unabhängig von der Länge.

Relevante speziell auf die maximale Länge, ein Zitat von Code Complete, allgemein als eines der besten Bücher werden zum Thema Praktiken der Codierung:

  

Von Zeit zu Zeit wird ein komplexer Algorithmus zu einer längeren Routine führen, und unter diesen Umständen sollte die Routine erlaubt wird organisch zu wachsen bis zu 100-200 Linien. (A-Linie ist eine noncomment, nicht leere Zeile des Quellcodes.) Jahrzehnte Beweis sagen, dass Routinen solchen Länge sind nicht mehr fehleranfällig als kürzere Routinen. Lassen Sie Themen wie Tiefe der Verschachtelung, die Anzahl der Variablen und andere Komplexität bezogenen Überlegungen, die Länge der Routine diktieren, anstatt eine Längenbeschränkung auferlegt per se.

     

Wenn Sie Routinen mehr als etwa 200 Zeilen schreiben wollen, seien Sie vorsichtig. Keine der Studien, die berichtet verringerte Kosten, verringerte Fehlerraten oder beide mit größeren Routinen unterschieden zwischen Größen, die größer als 200 Zeilen, und Sie sind verpflichtet, in eine obere Grenze von Verstehbarkeit laufen, wie Sie 200 Zeilen Code übergeben.

Es ist viele Jahre her, seit ich das las, aber ich glaube, es war in Learning Perl , dass sie empfehlen, ein Verfahren nicht mehr zu machen, als Sie das Ganze auf dem Bildschirm auf einmal passen. Ich dachte, das ein guter Maßstab war. Ich habe mehr Funktionen zu sehen, die wegen der sich wiederholenden Code noch lesbar waren (zum Beispiel Datenbankzugriff und Zuweisung von Eigenschaftswerte), aber das sind eher die Ausnahme als die Regel.

Um zu Rex Punkt hinzufügen, sollte es auch so kurz wie möglich sein. Bob Martin sagt 10 oder weniger

Object Mentor? - Wie groß sollte eine Funktion sein

So wenig wie möglich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top