Esiste una misura della decomposizione del codice? [duplicare]

20

Ho a che fare, ancora, con un'applicazione C ++ disordinata, tonnellate di classi con nomi confusi, oggetti che hanno puntatori l'uno nell'altro e in tutto, lunghi tipi di dati Boost e STL, ecc. (Metti in pausa e considera il tuo terrore preferito codice legacy disordinato. Probabilmente ce l'abbiamo.) La frase "code rot" mi viene in mente quando lavoro a questo progetto.

Esiste un metodo quantitativo per misurare la decomposizione del codice? Non mi aspetterei nulla di molto significativo o scientifico, dal momento che nessun'altra misura della produttività o della qualità del codice è così buona. Non sto cercando un semplice opposto delle misure di qualità del codice, ma in particolare una misura di quante cose brutte sono accadute dopo che una serie di "ingegneri" del software di manutenzione si sono trasformati in hacking al codice.

Una misura generale applicabile a qualsiasi lingua, o molte lingue, sarebbe ottima. Se non c'è nulla di simile, almeno per C ++, che è un linguaggio migliore della media per creare problemi.

Forse qualcosa che riguarda una misura della topologia del modo in cui gli oggetti si connettono durante il runtime, un conteggio di blocchi di codice commentato, come viene sparpagliata l'estensione di una variabile tipica, non lo so ... ma sicuramente ora, un decennio nel 21 ° secolo, qualcuno ha tentato di definire una sorta di misura del marciume.

Sarebbe particolarmente interessante automatizzare una serie di checkout svn, misurare la "rottenosità" di ciascuno e tracciare il decadimento nel tempo.

    
posta DarenW 23.02.2011 - 04:35
fonte

3 risposte

7

Questo elenco ha un intero gruppo di metriche che possono essere utilizzate per misurare un aspetto o l'altro del codice marcato.

McCabe IQ uses a vast number of software metrics to get the most precise assessment of your application's quality, security, and testing. We've defined these metrics below for your reference. Further details on many of these metrics can be found in the NIST document- "Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric" by Arthur Watson and Tom McCabe...

    
risposta data 23.02.2011 - 04:57
fonte
8

Quale porta rappresenta il tuo codice? ...

...Which door represents your team or your company? Why are we in that room? Is this just a normal code review or have we found a stream of horrible problems shortly after going live? Are we debugging in a panic, poring over code that we thought worked? Are customers leaving in droves and managers breathing down our necks? How can we make sure we wind up behind the right door when the going gets tough? (Robert "Uncle Bob" Martin, Clean Code: A Handbook of Agile Software Craftsmanship)

Qualsiasi misura / metrica di qualità è a rischio di essere inutile a meno che non sia supportata dalle revisioni del codice. Nella mia esperienza, non ho ancora visto una metrica che fosse impossibile ingannare in una spazzatura al cento per cento perfetta. D'altra parte non riesco a ricordare una recensione del codice in cui sono stato in grado di ingannare il recensore (anche se devo ammettere che non l'ho mai provato tanto).

    
risposta data 22.12.2011 - 10:41
fonte
4

La metrica della complessità ciclomatica (una definizione è qui ) è una metrica utilizzata per misurare la bruttezza del codice. Strumenti di aziende come Coverity possono misurare il CCM di un insieme di codici. Non lavoro per Coverity ma ho usato il prodotto per l'analisi dei difetti (non prestiamo molta attenzione al CCM).

La migliore risposta a questa domanda potrebbe essere

OMGWTF/sec

dato in precedenza da Robert sopra.

    
risposta data 23.02.2011 - 05:35
fonte

Leggi altre domande sui tag