2008-10-09 11 views
5

Was ist ein gutes Verhältnis für die Anzahl der Klassen zu Codezeilen für eine objektorientierte Sprache (sagen wir C++, C#, Java und ihre Vorlieben)?Was ist ein gutes Verhältnis von Klasse zu Codezeilen für objektorientierte Sprachen?

Viele Menschen, einschließlich Manager, wie die traditionellen LOC (Codezeilen) Metrik, um die Komplexität von Software zu messen, während viele hartgesottene objektorientierte Entwickler sagen, LOC ist wertlos seine Klasse zählen, die zählt. Und persönlich glaube ich, dass Klassen eine vernünftigere Metrik der Komplexität sein können, aber ohne eine LOC-Metrik ist die tatsächliche Komplexität dieser Klassen (Menge an Poltergeist und Göttern darin) schwer zu schätzen.

Also weiß jemand, was ist wahrscheinlich ein gesundes Verhältnis für einige ziemlich gut kodierte Software?

Edit: In diesem speziellen Fall suche ich nach einem Verhältnis, um eine Ball-Park-Schätzung zu ermitteln, wie viel Refactoring erforderlich sein könnte, um den Code aufzuräumen.

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

+0

Eine bessere Metrik für LOC ist die Anzahl der Blöcke und Bögen insgesamt und pro Klasse. Dies ergibt eine bessere Schätzung der Komplexität des Codes. Sie benötigen jedoch gute Code-Coverage-Tools, um diese zu messen. –

Antwort

7

LOCs oder NLOCs sind nicht wirklich ein gutes Maß für die Qualität oder Gesundheit Ihres Codes. Ich empfehle die Verwendung der statischen Codeanalyse (für Sie .net peeps), um zu sehen, wie gut Ihre Lösung aufgebaut ist.

Ich finde, dass LOCs nur auf Methodenebene gute Messung ist. Das heißt, im Allgemeinen mag ich meine Methoden, um auf einen Bildschirm zu passen (keine kleinen Schriftarten). Andere Metriken wie Cyclomatic Complexity und Code Coverage (für Sie TDDers) zusätzlich zu Ihren Komponententests können ein besseres Gefühl dafür geben, wie gesund Ihre Codebasis ist.

+0

Erstaunlich! Dieses Tool allein verschiebt das Gleichgewicht zu .Net sehr! Aber leider kein .Net für den Fall, den ich sehe. –

2

Es wird nicht wirklich eine gute, endgültige oder befriedigende Antwort für diese Frage geben. Ich werde jedoch sagen, dass nach meiner Erfahrung die Codezeilen pro Klasse mit zunehmender Erfahrung in der objektorientierten Programmierung abnehmen.

Die meisten Menschen, die nicht objektorientierte Design-Prinzipien studiert haben, neigen dazu, Klassen mit vielen und vielen Zeilen Code zu haben. Menschen mit viel objektorientierter Erfahrung werden tendenziell weniger Codezeilen pro Klasse haben, dafür aber viel mehr Klassen. Und natürlich werden sich beide über einander beklagen :-).

+0

Ich stimme Ihrer Beobachtung vollkommen zu, deshalb suche ich nach guten, guten Verhältnissen für ein gesundes Projekt –

2

Wenn Sie wirklich nur nach einer Faustregel suchen, würde ich sagen, dass jede Klasse, die nicht auf einem Blatt Papier mit einer lesbaren Auflösung ausgedruckt werden kann, möglicherweise zu lang ist und refaktoriert werden sollte. Ihre Zielmarke könnte dann in der Größenordnung von 100-200 Zeilen liegen, aber meiner Meinung nach ist die Anzahl der Seiten ein wenig leichter zu bewältigen.

Ich bin auch fest davon überzeugt, dass die Anzahl der Seiten metrisch als faktorielle Maß für schlechte statt linear betrachtet werden sollte. Wenn es eine zehn Seiten Klasse in der Code-Basis gibt, fühlt es sich an, als ob es mindestens drei Millionen ist mal schlechter für mich als eine kleine gut strukturierte Klasse.