Qual è un buon rapporto tra classe e righe di codice per linguaggi orientati agli oggetti? [chiuso]

StackOverflow https://stackoverflow.com/questions/186070

Domanda

Qual è un buon rapporto tra il numero Classes to Lines of Lines per un linguaggio orientato agli oggetti (diciamo C ++, C #, Java e loro simili)?

Molte persone, inclusi i gestori, come la tradizionale metrica LOC (righe di codice) per misurare la complessità del software, mentre molti sviluppatori orientati all'oggetto sodo diranno che LOC è inutile il suo conteggio di classe che conta. E personalmente credo che le Classi possano essere una metrica di complessità più ragionevole, ma che senza una metrica LOC la complessità effettiva di quelle classi (quantità di poltergeist e divinità lì dentro) è difficile da stimare.

Quindi qualcuno sa di quale sia probabilmente un rapporto salutare per alcuni software abbastanza ben codificati?

Modifica: in questo caso particolare, sto cercando un rapporto per determinare una stima del parco palla di quanto refactoring potrebbe essere necessario per ripulire il codice.

Modifica: qualcuno conosce i rapporti per alcuni grandi progetti OSS come Firefox, Apache, Webkit, ecc ...?

È stato utile?

Soluzione

LOC o NLOC non sono in realtà una buona misura della qualità o dell'integrità del tuo codice. Vi consiglio di utilizzare l’analisi del codice statico di NDepend (per voi peep .net) per vedere quanto bene è stata progettata la vostra soluzione.

Trovo che LOCs sia una buona misurazione solo a livello di metodo. Cioè, in genere mi piace che i miei metodi si adattino a uno schermo (senza caratteri piccoli). Altre metriche come la complessità ciclica e la copertura del codice (per voi TDDer) oltre ai test unitari possono dare un'idea migliore di quanto sia sana la vostra base di codice.

Altri suggerimenti

Non ci sarà davvero una risposta valida, definitiva o soddisfacente per questa domanda. Tuttavia, dirò che nella mia esperienza, le righe di codice per classe diminuiscono con l'aumentare dell'esperienza nella programmazione orientata agli oggetti.

La maggior parte delle persone che non hanno studiato i principi di progettazione orientata agli oggetti tenderanno ad avere classi con molte e molte righe di codice. Le persone con molta esperienza orientata agli oggetti tenderanno ad avere meno righe di codice per classe, ma avranno molte più classi. E, naturalmente, entrambi si lamenteranno l'uno dell'altro :-).

Se stai davvero cercando una regola empirica, direi che qualsiasi classe che non può essere stampata su un singolo foglio di carta a una risoluzione leggibile è probabilmente troppo lunga e dovrebbe essere riformattata. Il segno target potrebbe quindi essere dell'ordine di 100-200 righe ma, a mio avviso, il fattore numero di pagine è un po 'più semplice da gestire.

Credo fermamente che il numero di pagine metriche debba essere considerato come una misura fattoriale della cattiveria piuttosto che lineare. Se c'è una classe di dieci pagine nella base di codice, mi sembra che sia tre milioni volte peggio di una piccola classe ben progettata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top