Od niedawna używam SonarLint do Eclipse , co bardzo mi pomogło. Podniosło mnie jednak pytanie o złożoność cykliczną.
SonarLint uważa za akceptowalny współczynnik CC wynoszący 10, a w niektórych przypadkach przekraczam ten limit, około 5 lub 6 jednostek. Części te są powiązane z elementami odwzorowującymi, w których wartości zależą od różnych zmiennych, na przykład:
- Pole A opiera się na String sA;
- Pole B opiera się na String sB;
- Pole C opiera się na String sC;
- itp ...
Nie mam innego wyboru niż postawienie if
dla każdego pola. To nie jest mój wybór (na szczęście), ale już istniejący i złożony system, którego sam nie mogę zmienić.
Rdzeń mojego pytania brzmi: dlaczego tak ważne jest, aby nie mieć zbyt wysokiego CC w jednej metodzie ? Jeśli przeniesiesz niektóre z twoich warunków w jednej lub więcej pod-metodach w celu zmniejszenia złożoności, nie obniży to kosztów ogólnej funkcji, po prostu przenosi problem gdzie indziej, tak myślę?
(Przepraszam za małe błędy, jeśli występują).
EDYTOWAĆ
Moje pytanie nie odnosi się do globalnej złożoności cyklomatycznej, ale tylko do złożoności pojedynczej metody i podziału metod (mam trudność z wyjaśnieniem, co dokładnie mam na myśli, przepraszam). Pytam, dlaczego dopuszczalne jest podzielenie waszych warunków na mniejsze metody, jeśli nadal należą one do „super metody”, która po prostu wykona każdą pod-metodę, zwiększając w ten sposób złożoność algorytmu.
Drugi link ( dotyczący anty-wzoru ) jest jednak bardzo pomocny.