6 Stimmen

Was ist ein gutes Verhältnis von Klassen zu Codezeilen für objektorientierte Sprachen?

Was ist ein gutes Verhältnis zwischen der Anzahl der Klassen und der Anzahl der Codezeilen für eine objektorientierte Sprache (z.B. C++, C#, Java und ähnliche)?

Viele Leute, darunter auch Manager, mögen die traditionelle LOC-Metrik (lines of code) zur Messung der Komplexität von Software, während viele hartgesottene objektorientierte Entwickler sagen werden, dass LOC wertlos ist und es auf die Anzahl der Klassen ankommt. Ich persönlich bin der Meinung, dass Klassen ein vernünftigeres Maß für Komplexität sind, dass aber ohne eine LOC-Metrik die tatsächliche Komplexität dieser Klassen (die Anzahl der Poltergeister und Götter darin) schwer abzuschätzen ist.

Weiß also jemand, was wahrscheinlich ein gesundes Verhältnis für eine ziemlich gut programmierte Software ist?

Bearbeiten: In diesem speziellen Fall bin ich auf der Suche nach einem Verhältnis, um eine ungefähre Schätzung zu ermitteln, wie viel Refactoring erforderlich sein könnte, um den Code zu bereinigen.

Edit: Kennt jemand Kennzahlen für einige große OSS-Projekte wie Firefox, Apache, Webkit, etc...?

8voto

casademora Punkte 63718

LOCs oder NLOCs sind nicht wirklich ein gutes Maß für die Qualität oder den Zustand Ihres Codes. Ich empfehle die Verwendung von NDepend statische Codeanalyse (für .net-Fans), um zu sehen, wie gut Ihre Lösung aufgebaut ist.

Ich finde, dass LOCs nur auf der Ebene der Methode eine gute Messung ist. Das heißt, ich möchte, dass meine Methoden in der Regel auf einen Bildschirm passen (keine kleinen Schriften). Andere Metriken wie die zyklomatische Komplexität und die Codeabdeckung (für die TDDler unter Ihnen) können zusätzlich zu den Unit-Tests ein besseres Gefühl dafür vermitteln, wie gesund Ihre Codebasis ist.

2voto

tsimon Punkte 8182

Auf diese Frage wird es keine gute, endgültige oder befriedigende Antwort geben. Ich kann jedoch sagen, dass meiner Erfahrung nach die Anzahl der Codezeilen pro Klasse mit zunehmender Erfahrung in objektorientierter Programmierung abnimmt.

Die meisten Menschen, die keine objektorientierten Entwurfsprinzipien studiert haben, neigen dazu, Klassen mit vielen, vielen Codezeilen zu erstellen. Menschen mit viel objektorientierter Erfahrung werden eher weniger Codezeilen pro Klasse haben, dafür aber viel mehr Klassen. Und natürlich werden sich beide über den jeweils anderen beschweren :-).

2voto

Bob Cross Punkte 22071

Wenn Sie wirklich nur nach einer Faustregel suchen, dann würde ich sagen, dass jede Klasse, die nicht auf einem einzigen Blatt Papier mit einer lesbaren Auflösung ausgedruckt werden kann, möglicherweise zu lang ist und überarbeitet werden sollte. Ihre Zielmarke könnte dann in der Größenordnung von 100-200 Zeilen liegen, aber meiner Meinung nach ist der Faktor der Seitenzahl etwas einfacher zu handhaben.

Ich bin auch der festen Überzeugung, dass die Anzahl der Seiten als faktorielles Maß für die Schlechtigkeit und nicht als lineares Maß betrachtet werden sollte. Wenn es eine zehnseitige Klasse in der Codebasis gibt, fühlt sich das an, als wäre sie mindestens drei Millionen für mich schlimmer als eine kleine, gut strukturierte Klasse.

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