Cyklomatická zložitosť (cyclomatic complexity)

Aktualizované Sep 18, 2026

Cyklomatická zložitosť (cyclomatic complexity) je softvérová metrika založená na počte nezávislých ciest cez funkciu, metódu alebo modul. Vetvenia ako podmienky a cykly ju zvyšujú. Pri audite legacy codebase pomáha metrika nájsť logiku, ktorá si pred zmenou vyžiada viac testov a dôkladnejšie review.

Cyklomatická zložitosť (cyclomatic complexity) opisuje počet nezávislých vykonávacích ciest cez jednu jednotku kódu. Každý rozhodovací bod pridáva ďalšiu možnú trasu. Metrika dáva auditu legacy codebase konzistentný spôsob, ako nájsť funkcie alebo moduly, ktorých riadenie toku môže byť ťažko pochopiteľné, overiteľné a zmeniteľné.

Čo metrika počíta

Priamočiary kód má jednu trasu od vstupu po výstup. Podmienené vetvenia, cykly a ďalšie rozhodnutia v riadení toku pridávajú cesty. Analytické nástroje počítajú metriku z grafu riadenia toku, takže presné spracovanie jazykových konštrukcií sa môže nástroj od nástroja líšiť.

Číslo je štrukturálny signál. Nehovorí, či je biznis pravidlo potrebné, ani či je implementácia správna. Krátka funkcia s množstvom podmienok môže dosiahnuť vyššie skóre než dlhá funkcia, ktorá vykonáva jednu lineárnu postupnosť.

Tvar kóduSignál zložitostiOtázka do review
Priama postupnosťMálo nezávislých ciestJe správanie jasné a pokryté?
Vnorené podmienkyNiekoľko možných trásDá sa overiť každý výsledok?
Opakované vetvenieLogika roztrúsená do mnohých prípadovNemiešajú sa zodpovednosti?
Cesty pre výnimky a fallbackyAlternatívne trasy pri zlyhaníPokrývajú testy aj degradované správanie?

Prečo na tom v legacy kóde záleží

Zložité riadenie toku sťažuje zmenu, pretože vývojár musí zachovať správanie naprieč väčším počtom ciest. V staršom systéme môžu niektoré z týchto ciest predstavovať biznis výnimky, ktoré už nikto nezdokumentoval. Iné môžu byť obranným kódom pre integrácie alebo dátové formáty, ktoré v produkcii stále existujú.

Počas auditu legacy codebase sa oblastiam s vysokou zložitosťou venuje pozornejšie čítanie. Metrika pomáha nájsť ich, no dôvod existencie jednotlivých vetiev vysvetlia až ľudia, ktorí systém udržiavajú, testy a dôkazy z reálneho behu aplikácie.

Ako audit s výsledkom pracuje

Metrika je najužitočnejšia ako filter naprieč veľkým repozitárom. Audit ju vie porovnať s históriou zmien a dôkazmi z testov, aby našiel kód, ktorý je zložitý, často menený a slabo chránený. Táto kombinácia je akčnejšia než ktorákoľvek jednotlivá miera.

Review sa potom pýta:

  • Na ktorých cestách záleží? Identifikujte bežné, výnimočné a fallback správanie.
  • Ktoré cesty sú otestované? Priraďte testy k výsledkom, nielen k riadkom kódu.
  • Prečo tie vetvy existujú? Oddeľte platné pravidlá od zastaraných workaroundov.
  • Dá sa logika rozdeliť? Izolujte zodpovednosti bez zmeny správania.

Čo metrika rozhodnúť nedokáže

Cyklomatická zložitosť nemeria architektúru, čitateľnosť, bezpečnosť ani biznisovú hodnotu. Dokáže tiež podceniť náročnosť tam, kde sú jednoduché funkcie silne previazané naprieč systémom. Nízke skóre teda nie je dôkazom, že kód sa dá bezpečne zmeniť.

Audit dopĺňa metriku o technický dlh, analýzu závislostí a priame review. Tento širší súbor dôkazov pomáha tímu rozhodnúť, kde refactoring reálne znižuje riziko zmeny. Pomáha tiež ohraničiť prácu na migrácii legacy kódu okolo správania, ktoré treba pochopiť skôr, než sa pohne z miesta.