Metriche del codice - Profondità dell'ereditarietà (DIT)
In questo articolo vengono fornite informazioni su una delle metriche progettate specificamente per l'analisi orientata agli oggetti: Profondità dell'ereditarietà. La profondità dell'ereditarietà, detta anche profondità dell'albero di ereditarietà (DIT), è definita come "la lunghezza massima dal nodo alla radice dell'albero" CK. È possibile vedere questo esempio con un semplice esempio. Creare un nuovo progetto libreria di classi e, prima di scrivere codice, calcolare le metriche del codice scegliendo Analizza > calcola metriche del codice per la soluzione.
Poiché tutte le classi ereditano da System.Object
, la profondità è attualmente 1. Se si eredita da questa classe ed esamina la nuova classe, è possibile visualizzare il risultato:
Si noti che il nodo inferiore dell'albero (Class2
in questo caso), maggiore è la profondità dell'ereditarietà. È possibile continuare a creare elementi figlio e causare l'aumento della profondità quanto desiderato.
Presupposti
La profondità dell'ereditarietà è basata su tre presupposti fondamentali:
Più profonda è una classe nella gerarchia, maggiore sarà il numero di metodi che probabilmente erediterà, che rende più difficile stimarne il comportamento.
Gli alberi più profondi implicano una maggiore complessità di progettazione, perché sono coinvolti più classi e metodi.
Le classi più approfondite nell'albero hanno un maggiore potenziale per riutilizzare i metodi ereditati.
I presupposti 1 e 2 indicano che avere un numero più elevato per la profondità non è valido. Se questo è dove è finito, si sarebbe in buona forma; Tuttavia, il presupposto 3 indica che un numero più elevato per la profondità è valido per il potenziale riutilizzo del codice.
Analisi
Ecco come leggere la metrica depth:
Numero basso per profondità
Un numero basso per la profondità implica una minore complessità, ma anche la possibilità di un riutilizzo minore del codice tramite ereditarietà.
Numero elevato per la profondità
Un numero elevato di profondità implica un maggiore potenziale per il riutilizzo del codice tramite ereditarietà, ma anche una maggiore complessità con una maggiore probabilità di errori nel codice.
Analisi codice
L'analisi del codice include una categoria di regole di gestibilità. Per altre informazioni, vedere Regole di gestibilità. Quando si usa l'analisi del codice legacy, il set di regole delle linee guida per la progettazione estesa contiene un'area di gestibilità:
All'interno dell'area di gestibilità è una regola per l'ereditarietà:
Questa regola genera un avviso quando la profondità dell'ereditarietà raggiunge 6 o superiore, quindi è una buona regola per evitare un'ereditarietà eccessiva. Per altre informazioni sulla regola, vedere CA1501.
Mettere tutto insieme
Valori elevati per DIT indicano che anche il potenziale di errori è elevato, i valori bassi riducono il potenziale di errori. I valori elevati per DIT indicano un maggiore potenziale per il riutilizzo del codice tramite ereditarietà, i valori bassi suggeriscono un riutilizzo del codice minore anche se l'ereditarietà da usare. A causa della mancanza di dati sufficienti, non è attualmente accettato uno standard per i valori DIT. Anche gli studi effettuati di recente non hanno trovato dati sufficienti per determinare un numero praticabile che potrebbe essere usato come numero standard per questa metrica Shatnawi. Sebbene non vi siano prove empiriche per supportarla, diverse risorse suggeriscono che un DIT intorno a 5 o 6 deve essere un limite superiore. Ad esempio, vedere https://www.devx.com/architecture-zone/45611/
.
Citazioni
CK
Chidamber, S. R. & Kemerer, C. F. (1994). Suite di metriche per la progettazione orientata agli oggetti (I edizione Enterprise E Transactions on Software Engineering, Vol. 20, No. 6). Recuperato il 14 maggio 2011 dal sito Web dell'Università di Pittsburgh: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf
Krishnan
Subramanyam, R. & Krishnan, M. S. (2003). Analisi empirica delle metriche CK per la complessità della progettazione orientata agli oggetti: implicazioni per i difetti software (I edizione Enterprise E transazioni in ingegneria software, vol. 29, n. 4). Recuperato il 14 maggio 2011, originariamente ottenuto dal sito Web University of Massachusetts Dartmouth https://ieeexplore.ieee.org/abstract/document/1191795
Shatnawi
Shatnawi, R. (2010). Analisi quantitativa dei livelli di rischio accettabili delle metriche orientate agli oggetti nei sistemi open source (I edizione Enterprise E Transactions on Software Engineering, Vol. 36, N. 2).