Cyklomatyczna złożoność to sposób na określenie, czy kod wymaga refaktoryzacji. Kod jest analizowany i określana jest liczba złożoności. Złożoność jest określana przez rozgałęzienie (instrukcje if itp.) Złożoność może również uwzględniać zagnieżdżanie się pętli itp. I inne czynniki w zależności od zastosowanego algorytmu.
Liczba jest przydatna na poziomie metody. Na wyższych poziomach jest to tylko liczba.
Liczba 17 754 wskazuje na złożoność projektu (kod całkowity), co nie ma tak dużego znaczenia.
Szczegółowa analiza złożoności na poziomie klasy i metody określi obszary kodu, które należy przekształcić w mniejsze metody lub przeprojektować w celu wyeliminowania złożoności.
Rozważ CASE
oświadczenie zawierające 50 przypadków w jednej metodzie. Może każdy stan ma inną logikę biznesową. To wygeneruje cykliczną złożoność 50. Istnieje 50 punktów decyzyjnych. Instrukcja CASE może wymagać przeprojektowania przy użyciu wzorca fabrycznego, aby pozbyć się logiki rozgałęziania. Czasami można dokonać refaktoryzacji (rozbić metodę na mniejsze części), aw niektórych przypadkach tylko przeprojektowanie zmniejszy złożoność.
Ogólnie dla złożoności na poziomie metody:
- <10 Łatwy w utrzymaniu
- 11-20 Trudniej w utrzymaniu
- 21+ kandydatów do refaktoryzacji / przeprojektowania
Weź również pod uwagę, że większe złożoności utrudniają testowanie kodu.
Największa złożoność, jaką widziałem w przypadku jednej metody, to 560. Było to około 2000 wierszy instrukcji if w jednej metodzie. Zasadniczo nieusuwalny, niestabilny, pełen potencjalnych błędów. Wyobraź sobie wszystkie przypadki testów jednostkowych potrzebne dla tej logiki rozgałęziania! Niedobrze.
Spróbuj utrzymać wszystkie metody poniżej 20 lat i zdaj sobie sprawę, że refaktoryzacja dowolnej metody wiąże się z pewnym kosztem.