Udostępnij za pomocą


Metryki kodu — głębokość dziedziczenia (DIT)

W tym artykule przedstawiono jedną z metryk przeznaczonych specjalnie do analizy obiektowej: głębokość dziedziczenia. Głębokość dziedziczenia, nazywana również głębokością drzewa dziedziczenia (DIT), jest zdefiniowana jako "maksymalna długość od węzła do korzenia drzewa" CK. Można to zobaczyć za pomocą prostego przykładu. Utwórz nowy projekt Class Library i przed napisaniem dowolnego kodu oblicz metryki kodu, wybierając pozycję Analizuj > Oblicz metryki kodu dla rozwiązania.

Głębokość dziedziczenia — przykład 1

Ponieważ wszystkie klasy dziedziczą z System.Object, głębokość wynosi obecnie 1. Jeśli dziedziczysz z tej klasy i sprawdzasz nową klasę, możesz zaobserwować wynik:

Głębokość dziedziczenia — przykład 2

Zwróć uwagę, że im niższy węzeł w drzewie (Class2 w tym przypadku), tym wyższa głębokość dziedziczenia. Możesz nadal tworzyć dzieci i spowodować zwiększenie głębokości jak tylko zechcesz.

Założenia

Głębokość dziedziczenia opiera się na trzech podstawowych założeniach CK:

  1. Im głębsza klasa w hierarchii, tym większa liczba metod, które prawdopodobnie odziedziczy, co utrudnia przewidywanie jego zachowania.

  2. Głębsze drzewa obejmują większą złożoność projektowania, ponieważ zaangażowanych jest więcej klas i metod.

  3. Głębsze klasy w drzewie mają większy potencjał ponownego wykorzystania odziedziczonych metod.

Założenia 1 i 2 informują, że większa głębokość jest zła. Gdyby na tym się kończyło, byłbyś w dobrej formie; jednak założenie 3 wskazuje, że większa wartość głębokości jest dobra dla potencjalnego ponownego użycia kodu.

Analysis

Poniżej przedstawiono sposób odczytywania metryki głębokości:

  • Niska wartość głębokości

    Niska liczba głębokości oznacza mniejszą złożoność, ale także możliwość mniejszego ponownego użycia kodu poprzez dziedziczenie.

  • Wysoka liczba dla głębokości

    Duża liczba głębi oznacza większy potencjał ponownego użycia kodu przez dziedziczenie, ale także większą złożoność z wyższym prawdopodobieństwem błędów w kodzie.

Code Analysis

Analiza kodu obejmuje kategorię reguł konserwacji. Aby uzyskać więcej informacji, zobacz Reguły konserwacji. W przypadku korzystania ze starszej analizy kodu zestaw reguł rozszerzonych wytycznych dotyczących projektowania zawiera obszar możliwości konserwacji:

Głębokość zestawów reguł projektowania dziedziczenia

W obszarze podatności na konserwację znajduje się reguła dotycząca dziedziczenia:

Głębokość reguły konserwacji dziedziczenia

Ta reguła wyświetla ostrzeżenie, gdy głębokość dziedziczenia osiągnie wartość 6 lub większą, dlatego dobrym rozwiązaniem jest zapobieganie nadmiernemu dziedziczeniu. Aby dowiedzieć się więcej na temat reguły, zobacz CA1501.

Łączenie tego wszystkiego

Wysokie wartości dit oznaczają, że potencjał błędów jest również wysoki, a niskie wartości zmniejszają potencjał błędów. Wysokie wartości DIT wskazują na większy potencjał ponownego użycia kodu poprzez dziedziczenie, podczas gdy niskie wartości sugerują mniejsze ponowne użycie poprzez dziedziczenie. Ze względu na brak wystarczających danych nie ma obecnie akceptowanego standardu dla wartości DIT. Nawet badania przeprowadzone niedawno nie wykazały wystarczających danych, aby określić realną liczbę, która może być używana jako liczba standardowa dla tej metryki Shatnawi. Chociaż nie ma dowodów empirycznych na jego poparcie, kilka zasobów sugeruje, że DIT około 5 lub 6 powinno być górną granicą. Na przykład zobacz https://www.devx.com/architecture-zone/45611/.

Cytatów

CK

Chidamber, S. R. & Kemerer, C. F. (1994). Pakiet metryk dla projektowania obiektowego (transakcje IEEE w zakresie inżynierii oprogramowania, vol. 20, nr 6). Pobrano 14 maja 2011 r. z witryny internetowej University of Pittsburgh: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf

Krishnan

Subramanyam, R. & Kryszna, M. S. (2003). Empiryczna analiza metryk CK pod kątem złożoności projektowania obiektowo zorientowanego: implikacje dla wad oprogramowania (IEEE Transactions on Software Engineering, vol. 29, nr 4). Pobrano 14 maja 2011 r., pierwotnie uzyskane z witryny internetowej University of Massachusetts Dartmouth https://ieeexplore.ieee.org/abstract/document/1191795

Shatnawi

Shatnawi, R. (2010). Badanie ilościowe akceptowalnych poziomów ryzyka metryk obiektowo zorientowanych w systemach otwartoźródłowych (Transakcje IEEE z zakresu inżynierii oprogramowania, vol. 36, nr 2).