Delen via


Metrische codegegevens - Overnamediepte (DIT)

In dit artikel leert u meer over een van de metrische gegevens die speciaal zijn ontworpen voor objectgerichte analyse: Diepte van overname. Erfenisdiepte, ook wel diepte van erfenisstructuur (DIT) genoemd, wordt gedefinieerd als "de maximale lengte van het knooppunt tot de wortel van de boom" CK. U kunt dit zien met een eenvoudig voorbeeld. Maak een nieuw class library-project en bereken de metrische codegegevens voordat u code schrijft door Metrische gegevens voor de oplossing analyseren > te kiezen.

Diepte van overnamevoorbeeld 1

Omdat alle klassen overnemen van System.Object, is de diepte momenteel 1. Als u van deze klasse erft en de nieuwe klasse bekijkt, ziet u het resultaat.

Diepte van overnamevoorbeeld 2

U merkt op dat hoe lager het knooppunt in de boom (Class2 in dit geval), hoe groter de diepte van overerving. U kunt kinderen blijven maken en ervoor zorgen dat de diepte zo veel mogelijk toeneemt als u wilt.

Aannamen

De diepte van overname is gebaseerd op drie fundamentele veronderstellingen CK:

  1. Hoe dieper een klasse in de hiërarchie, hoe groter het aantal methoden dat deze waarschijnlijk overneemt, waardoor het moeilijker wordt om het gedrag ervan te voorspellen.

  2. Diepere boomstructuren hebben een grotere ontwerpcomplexiteit omdat er meer klassen en methoden betrokken zijn.

  3. Diepere klassen in de structuur hebben een groter potentieel voor het hergebruik van overgenomen methoden.

Veronderstellingen 1 en 2 vertellen u dat een hoger getal voor diepte slecht is. Als dat is waar het eindigt, zou je in goede vorm zijn; veronderstelling 3 geeft echter aan dat een hoger aantal voor diepte goed is voor mogelijk hergebruik van code.

Analysis

U leest als volgt de dieptemetriek:

  • Laag getal voor diepte

    Een laag aantal voor diepte impliceert minder complexiteit, maar ook de mogelijkheid om minder code opnieuw te gebruiken via overname.

  • Hoog getal voor diepte

    Een groot aantal diepten impliceert meer potentieel voor het hergebruik van code via overname, maar ook een hogere complexiteit met een hogere kans op fouten in de code.

Codeanalyse

Codeanalyse bevat een categorie onderhoudsregels. Zie Regels voor onderhoudbaarheidvoor meer informatie. Wanneer u verouderde codeanalyse gebruikt, bevat de regelset uitgebreide ontwerprichtlijnen een gebied voor onderhoudbaarheid:

Diepte van richtlijnen voor erfgoedontwerp

Binnen het onderhoudbaarheidsgedeelte is er een regel voor overerving.

Diepte van de beheerbaarheidsregel voor overname

Deze regel geeft een waarschuwing uit wanneer de overnamediepte 6 of hoger bereikt, dus het is een goede regel om overmatige overname te voorkomen. Zie CA1501 voor meer informatie over de regel.

Alles samenbrengen

Hoge waarden voor DIT betekenen dat de kans op fouten ook hoog is, lage waarden verminderen het potentieel voor fouten. Hoge waarden voor DIT geven een groter potentieel aan voor het hergebruik van code via overname, lage waarden suggereren minder codegebruik, hoewel overname moet worden gebruikt. Vanwege onvoldoende gegevens is er momenteel geen geaccepteerde standaard voor DIT-waarden. Zelfs studies die onlangs zijn uitgevoerd, hebben onvoldoende gegevens gevonden om een levensvatbaar getal te bepalen dat kan worden gebruikt als een standaardnummer voor deze metrische shatnawi. Hoewel er geen empirisch bewijs is om dit te ondersteunen, suggereren verschillende resources dat een DIT ongeveer 5 of 6 een bovengrens moet zijn. Zie bijvoorbeeld https://www.devx.com/architecture-zone/45611/.

Citaten

CK

Chidamber, S. R. & Kemerer, C. F. (1994). Een Metriekenpakket voor Objectgeoriënteerd Ontwerp (IEEE Transactions on Software Engineering, Vol. 20, Nr. 6). Opgehaald op 14 mei 2011, van de website university of Pittsburgh: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf

Krishnan

Subramanyam, R. & Krishnan, M. S. (2003). Empirische analyse van CK-metrieken voor object-oriented ontwerpcomplexiteit: implicaties voor softwaredefecten (IEEE Transactions on Software Engineering, Vol. 29, Nr. 4). Opgehaald op 14 mei 2011, oorspronkelijk verkregen van de website University of Massachusetts Dartmouth https://ieeexplore.ieee.org/abstract/document/1191795

Shatnawi

Shatnawi, R. (2010). Een kwantitatief onderzoek naar de acceptabele risiconiveaus van Object-Oriented metrieken in Open-Source Systemen (IEEE Transactions on Software Engineering, Vol. 36, Nr. 2).