Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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:
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:
Im głębsza klasa w hierarchii, tym większa liczba metod, które prawdopodobnie odziedziczy, co utrudnia przewidywanie jego zachowania.
Głębsze drzewa obejmują większą złożoność projektowania, ponieważ zaangażowanych jest więcej klas i metod.
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:
W obszarze podatności na konserwację znajduje się reguła dotycząca 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).