Programmēšana

Kā analizēt cikliskā sarežģītību jūsu kodā

Ir dažādi faktori, kas var veicināt tipa vai metodes sarežģītību jūsu lietojumprogrammas kodā. Ciklomatiskā sarežģītība ir populāra metrika, ko izmanto, lai noteiktu jūsu programmas sarežģītību. Citiem vārdiem sakot, tā ir programmatūras metrika, kas nodrošina programmas sarežģītības kvantitatīvu mērījumu.

Būtībā ciklomātiskā sarežģītība ir lineāri neatkarīgu ceļu rādītājs, kas ir pieejams, izmantojot jūsu programmu. Tās vērtība faktiski ir atkarīga no nosacīto zaru vai konstrukciju skaita jūsu kodā. Tātad ciklomātiskā sarežģītība būs augsta metodēm, kurām ir liels skaits nosacītu konstrukciju (t.i., switch / if / while / for / foreach paziņojumi).

MSDN norāda: "Ciklomātiskā sarežģītība mēra lineāri neatkarīgo ceļu skaitu, izmantojot metodi, ko nosaka nosacīto zaru skaits un sarežģītība. Zema ciklomātiskā sarežģītība parasti norāda uz metodi, kuru ir viegli saprast, pārbaudīt un uzturēt."

Ciklomātiskā sarežģītība tiek aprēķināta šādi:

CC = E - N + 1

Kur,

CC apzīmē ciklisku sarežģītību

E apzīmē diagrammas malu skaitu

N apzīmē mezglu skaitu diagrammā

Ņemiet vērā, ka mezgls apzīmē loģisko atzaru, bet mala - savienoto līniju starp mezgliem. Starp citu, jo zemāka ir metodes cikliskās sarežģītības vērtība, jo vieglāk to pārbaudīt un uzturēt, līdz ar to labāk. Jūs varat izmantot cikliskās sarežģītības priekšrocības, lai aprēķinātu metožu, veidu un arī moduļu sarežģītību savā lietojumprogrammā.

Tā kā ciklomātiskā sarežģītība norāda uz līnijpārvadātājiem neatkarīgos ceļus, kaut arī programma, jo lielāka ciklomatiskās sarežģītības vērtība, jo lielāks testa gadījumu skaits jums būs nepieciešams jūsu programmai - nepieciešamo testa gadījumu skaits parasti būtu līdzvērtīgs ciklomātiskajiem gadījumiem. sarežģītība šajā gadījumā. Ja ciklomatiskās sarežģītības vērtība ir mazāka (vērtība, kas mazāka vai vienāda ar 10, tiek uzskatīta par lielisku), tiek pieņemts, ka kods ir labi strukturēts, ļoti pārbaudāms un uzturams.

Kā pārbaudīt ciklomātisko sarežģītību?

Jaunākās Visual Studio versijas nodrošina atbalstu ciklomatiskās sarežģītības aprēķināšanai, izmantojot Visual Studio IDE. Jūs varat aprēķināt koda metriku visam risinājumam vai atlasītajiem projektiem. Kad jūs to palaižat, logā Kodu metrikas rezultāti tiks parādīti kodu analīzes rezultāti, kas sakārtoti apkopes indeksā, ciklomātiskajā sarežģītībā, mantojuma dziļumā, klases savienojumā un arī koda rindiņās. Šajā amatā mēs izpētīsim ciklomātisko sarežģītību, un es izklāstīšu diskusiju par pārējiem jautājumiem vēlāk šeit.

Tagad skatiet tālāk sniegto koda fragmentu.

private void DisplayMessage (virkne str)

       {

Console.WriteLine (str);

       }

Aprēķinot ciklomātisko sarežģītību metodei DisplayMessage, izmantojot Visual Studio, tā parāda vērtību kā 1. Tagad apsveriet šo metodi, kurā ir pārbaude, vai parametram, kas metodei nodots kā arguments, nav vai nav tukšs.

private void DisplayTextMessage (virknes virkne)

       {

ja (! string.IsNullOrEmpty (str))

Console.WriteLine (str);

       }

Ja vēlreiz palaižat koda metriku risinājumam, ievērosiet, ka DisplayTextMessage metodes cikliskā sarežģītība ir 2.

Kā es varu samazināt kodola sarežģītību kodā?

Lai gan dažos gadījumos ir grūti pielāgoties noteiktai stratēģijai, lai samazinātu koda ciklisko sarežģītību, jo nosacītie konstrukcijas var būt tāpēc, ka tas ir raksturīgs jūsu problēmai, jūs varat pieņemt dažādas stratēģijas, lai sasniegtu zemāku ciklomatiskās sarežģītības vērtību. Divas pieejas, kas jums jāievēro, lai mazinātu augstu ciklomātisko sarežģītību, ir vienības testi un koda atjaunošana. Lai gan vienības testi palīdzēs jums samazināt riskus, jums vajadzētu izmantot koda atjaunošanu, lai padarītu kodu mazāk sarežģītu, vieglāk pārbaudāmu un uzturamu.

Jūs varat samazināt ciklomātisko sarežģītību savā programmā, aizstājot nosacītos konstruktus ar polimorfismu. Izmantojot polimorfismu, jūs varat pievienot savam kodam daudz elastības - kods kļūst pārbaudāmāks, un jūs varat pievienot, rediģēt vai pat noņemt nosacījumus, nemainot kodu. Būtībā, jo mazāka ir ciklomatiskās sarežģītības vērtība, jo vairāk jūsu kods ir viegli nolasāms, pārbaudāms un uzturams. Dažos gadījumos es iesaku izmantot uzvedības dizaina modeļu, piemēram, stratēģijas dizaina modeļa priekšrocības, lai samazinātu koda ciklisko sarežģītību.

$config[zx-auto] not found$config[zx-overlay] not found