Kodmått – Arvsdjup (DIT)

I den här artikeln får du lära dig om ett av måtten som utformats specifikt för objektorienterad analys: Arvsdjup. Arvsdjup, även kallat djup för arvsträd (DIT), definieras som "den maximala längden från noden till trädets rot" CK. Du kan se detta med ett enkelt exempel. Skapa ett nytt klassbiblioteksprojekt och beräkna kodmåtten innan du skriver någon kod genom att välja Analysera > beräkna kodmått för lösning.

Djup på arvsexempel 1

Eftersom alla klasser ärver från System.Object är djupet 1. Om du ärver från den här klassen och undersöker den nya klassen kan du se resultatet:

Djup på arvsexempel 2

Observera att ju lägre nod i trädet (Class2 i det här fallet), desto högre arvsdjup. Du kan fortsätta att skapa underordnade objekt och få djupet att öka så mycket du vill.

Antaganden

Arvsdjup bygger på tre grundläggande antaganden CK:

  1. Ju djupare en klass i hierarkin är, desto fler metoder ärver den förmodligen, vilket gör det svårare att förutsäga dess beteende.

  2. Djupare träd innebär större designkomplexitet eftersom fler klasser och metoder ingår.

  3. Djupare klasser i trädet har större potential att återanvända ärvda metoder.

Antaganden 1 och 2 visar att det är dåligt att ha ett högre tal för djup. Om det var där det slutade, skulle du vara i god form; Antagandet 3 indikerar dock att ett högre tal för djup är bra för potentiell återanvändning av kod.

Analysis

Så här läser du djupmåttet:

  • Lågt tal för djup

    Ett lågt antal för djup innebär mindre komplexitet men också möjligheten till mindre återanvändning av kod genom arv.

  • Högt värde för djup

    Ett högt antal för djup innebär större potential för återanvändning av kod genom arv men också högre komplexitet med högre sannolikhet för fel i koden.

Kodanalys

Kodanalys innehåller en kategori av regler för underhåll. Mer information finns i Underhållsregler. När du använder äldre kodanalys innehåller den utökade regeluppsättningen för designriktlinjer ett område för underhållbarhet.

Djup för regeluppsättningar för riktlinjer för arvsdesign

Inom underhållsområdet finns en regel för arv:

Djup för regel för arvsunderhållbarhet

Den här regeln utfärdar en varning när arvsdjupet når 6 eller högre, så det är en bra regel för att förhindra överdrivet arv. Mer information om regeln finns i CA1501.

Sammanställning

Höga värden för DIT innebär att risken för fel också är hög, låga värden minskar risken för fel. Höga värden för DIT indikerar en större potential för återanvändning av kod via arv, medan låga värden tyder på mindre återanvändning av kod genom arv. På grund av brist på tillräckliga data finns det för närvarande ingen godkänd standard för DIT-värden. Inte ens studier som gjorts nyligen hittade tillräckliga data för att fastställa ett livskraftigt tal som kunde användas som standardnummer för det här måttet Shatnawi. Även om det inte finns några empiriska bevis för att stödja det, tyder flera resurser på att en DIT runt 5 eller 6 bör vara en övre gräns. Se till exempel https://www.devx.com/architecture-zone/45611/.

Citat

CK

Chidamber, S. R. & Kemerer, C. F. (1994). En måttsvit för objektorienterad design (IEEE-transaktioner inom programvaruteknik, vol. 20, nr 6). Hämtad 14 maj 2011 från University of Pittsburgh webbplats: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf

Krishnan

Subramanyam, R. & Krishnan, M. S. (2003). Empirisk analys av CK-mått för komplexitet i objektorienterad design: Konsekvenser för programvarufel (IEEE:s tidskrift om programvaruteknik, vol. 29, nr 4). Hämtad 14 maj 2011, ursprungligen hämtad från University of Massachusetts Dartmouth webbplats https://ieeexplore.ieee.org/abstract/document/1191795

Shatnawi

Shatnawi, R. (2010). En kvantitativ undersökning av godtagbara risknivåer för objektorienterade metrik i system med öppen källkod ("IEEE Transactions on Software Engineering", vol. 36, nr 2).