Ci sono Metriche e metriche? o metriche e basta?

Nel mese di giugno non so se qualcuno si è accorto della mia "assenza".

In realtà ero alle prese con delle questioni abbastanza complicate (per me) che mi hanno fatto imparare tante belle cose su diversi fronti.

Ad esempio ho capito che, prima o poi, dovrò mettermi anch'io a studiare un po' di più le "bassezze" del CLR.

Ma veniamo al dunque.

In questi giorni sto utilizzando NDepend per fare delle analisi su un grosso progetto alla quale lavoro (in solitario) da un anno (il 16 luglio :D).

Lo strumento mi sembra davvero molto ben fatto e completo e da oggi, accantonate le prime analisi lanciate puramente per "vedere il risultato", ho cominciato a studiarmi un po' tutte le informazioni.

Il progetto (formato da 8 assembly custom) è risultato altamente instabile (beh, sono pur sempre un sviluppatore che ogni tanto si avventura in terreno architetturale...) ma quello che più mi han fatto riflettere sono alcune metriche.

Tipo: metodi con più di 30 righe sono troppo lunghi e devono essere splittati.

Oppure: metodi con meno del 20% di commenti non vanno bene, e ancora: oggetti troppo grandi sono da evitare, ecc, ecc...

Al di là del fatto che mi rendo conto che non sono cose su cui passare troppo con leggerezza, mi chiedevo queste sono da considerare Metriche o metriche (la differenza, per chi non l'avesse notato, sta nella maiuscola e, quindi, nell'importanza).

Voglio dire: un architetto (o chi per lui) in quanto tale SA quali sono, nel suo progetto le occasioni in cui una metrica può essere trascurata o deve per forza mirare alla perfezione (=in tutti i membri, di tutte le classi, di tutti i namespace di tutti gli assembly, le metriche Devono essere Rispettate)?

Faccio un esempio, poi vi lascio alle vostre considerazioni: nel mio Domain Model ho una classe del tipo NomeOggettoView che ha un metodo GetColonne che ritorna un IList di DataColumn per comporre correttamente la griglia quando viene utilizzata come DataSource.

E' più lunga di 30 righe perchè deve ritornare circa 10 DataColum, e per ognuna delle quali definisco: nome del DataItem, se dovrà essere centrato o meno, la larghezza, ecc...

Va da se che splittarlo non ha molto senso...

Applicando però questo ragionamento all'infinito si corre il rischio di non fare nessun intervento e quindi...?

Print | posted on lunedì 30 giugno 2008 18.07

Feedback

# re: Ci sono Metriche e metriche? o metriche e basta?

Left by Matteo Baglini at 01/07/2008 9.46
Gravatar ...quindi dipende da qual'è il tuo obbiettivo! Le metriche servono come supporto. Te hai detto che il sistema è molto instabile, non credo che riducendo il numero di righe di codice per metodo aumenterai la stabilità, questo perchè l'operazione di refactoring prevede il cambio della formna e non del funzionamento, quindi in questo tuo caso quelle che hai riportato sono metriche.

In fine ricorda che anche il processo di correzzione del sw a fronte di metriche è un progesso incrementale. Ogni volta che "tocchi" il tuo sorgente per qualche fix controlli le metriche ed eventualemnte le migliori. Non a senso sviluppare una super application ed applicare le metriche solo alla fine del progetto con risultati incredibili.

# re: Ci sono Metriche e metriche? o metriche e basta?

Left by marco at 01/07/2008 9.49
Gravatar secondo me non è che bisogna darli + di tanto peso, è piuttosto qualcosa da provo a dare un'occhiata dove qualche metrica mi segnala un problema per guardare se si riesce a risolverlo in modo naturale.
In particolare i metodi troppo lunghi di 30 righe mi sembra una delle metriche meno rilevanti, applicarlo alla lettera secondo me comporterebbe spesso un incasinamento del codice (moltiplicando il # di metodi di una classe e soprattutto con metodi innaturali (nel senso che non hanno una vera e propria funzione specifica, essendo stati creati solo per diminuire il # di righe).
Oltretutto spingerebbe anche gli sviluppatori a fare del codice super compatto a fronte della leggibilità (tipo operatori ternari in ogni occasione).
insomma la cosa rimane guardare caso x caso cosa è meglio fare, cercando cmq di rispettare i "consigli" dettati dalle metriche quando possibile.

Your comment:





 
Please add 2 and 5 and type the answer here:

Copyright © Omar Damiani

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski