3 Stimmen

Refaktorierung von Methoden

Wie viele Codezeilen kann eine Methode mit einem guten Design haben, bevor man das Design verbessern muss?

0voto

Lou Franco Punkte 85315

Codezeilen sind eine Metrik, aber auch die Codepfade sollten betrachtet werden. Jedes "if", "and", "or", jede Schleife usw. macht die Funktion komplexer. Man kann sehr kurze, komplexe Funktionen haben, und man kann auch einfach zu verstehende, aber lange Funktionen haben. Refactoring funktioniert gut, wenn man damit die Komplexität reduziert, nicht unbedingt die Anzahl der Codezeilen.

Zum Beispiel:

if (color.r == color.g && color.r == color.b)
    if (color.r > 128)
       newColor = color.White;
    else
       newColor = color.Black;

gegen

if(isGray(color))
   newColor = thresholdGray(color)

Die Absicht ist klarer, und die Anzahl der Wege ist geringer.

0voto

Carl Manaster Punkte 38966

Es stimmt, dass die LOC eine miserable Kennzahl ist, da sie nicht mit der Eigenschaft korreliert, die Sie wirklich interessiert (Qualität des Designs). Aber ihre große Stärke als Metrik - und der Grund, warum sie so häufig verwendet und diskutiert wird - ist natürlich, dass sie so einfach zu messen ist. Das ist keine reine Faulheit; für einen Bruchteil von einem Prozent des Aufwands erhält man - nun ja, vielleicht 20 oder 30 Prozent des Werts aussagekräftigerer Metriken. Sie können einfach einen Blick auf eine Methode oder die letzte Zeile einer Klasse werfen und die LOC-Metrik bewerten. Man kann sich einfach die Höhe des Rollbalkens ansehen und hat eine ziemlich gute Vorstellung davon.

Und es gibt echte LOC-Grenzen, die sinnvoll sind - zu viele, die auf einen Bildschirm oder eine Textseite passen, sind wirklich zu viele, ungeachtet der Einfachheit und Kohärenz.

Ich mag wirklich kurze Methoden. Einzeiler sind großartig. Wenn eine Methode in den zweistelligen Bereich der LOC geht, juckt es. Wenn es 30 oder mehr sind, ist es schmerzhaft. Verwenden Sie LOC, aber seien Sie sich über seine Schwäche als Metrik im Klaren und wissen Sie, welche besseren Metriken (z.B. zyklomatische Komplexität) es gibt. Verwenden Sie diese, wenn Sie etwas Besseres brauchen.

0voto

Alex Punkte 927

Wahrscheinlich sollten wir hier eher die von einer Methode implementierte "Verantwortung" betrachten, als uns an harten Zahlen zu orientieren. Wenn wir versuchen, eine Methode auf eine einzige Zuständigkeit zu beschränken, wird sich automatisch um LOC gekümmert.

Eine weitere Faustregel, die wir befolgen können, ist die Begrenzung der Länge einer Methode, die wir auf einem einzigen Bildschirm sehen können.

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