Ohjelmointi

Kuinka analysoida koodin syklomaattinen monimutkaisuus

On olemassa useita tekijöitä, jotka voivat vaikuttaa tyypin tai tyyppiin liittyvän menetelmän monimutkaisuuteen sovelluksen koodissa. Syklomaattinen monimutkaisuus on suosittu mittari, jota käytetään mittaamaan ohjelman monimutkaisuus. Toisin sanoen, se on ohjelmistomittari, joka tarjoaa kvantitatiivisen mittauksen ohjelman monimutkaisuudesta.

Pohjimmiltaan syklomaattinen monimutkaisuus on mittari lineaarisesti itsenäisistä poluista, jotka ovat käytettävissä ohjelman kautta. Sen arvo riippuu tosiasiallisesti ehdollisten haarojen tai rakenteiden määrästä koodissasi. Joten syklomaattinen monimutkaisuus on suuri menetelmille, joilla on suuri määrä ehdollisia rakenteita (eli switch / if / while / for / foreach-lauseita).

MSDN toteaa: "Syklomaattinen monimutkaisuus mittaa lineaarisesti riippumattomien polkujen määrää menetelmän avulla, joka määräytyy ehdollisten haarojen lukumäärän ja monimutkaisuuden mukaan. Pieni syklomaattinen monimutkaisuus tarkoittaa yleensä menetelmää, joka on helppo ymmärtää, testata ja ylläpitää."

Näin syklomaattinen monimutkaisuus lasketaan:

CC = E - N + 1

Missä,

CC tarkoittaa syklomaattista monimutkaisuutta

E tarkoittaa kaavion reunojen lukumäärää

N tarkoittaa kaavion solmujen määrää

Huomaa, että solmu edustaa loogista haaraa ja reuna edustaa liitettyä linjaa solmujen välillä. Muuten, mitä alhaisempi menetelmän syklomaattisen monimutkaisuuden arvo on, sitä helpompaa on testata ja ylläpitää, joten parempi. Voit hyödyntää syklomaattista monimutkaisuutta laskeaksesi menetelmien, tyyppien ja moduulien monimutkaisuuden sovelluksessasi.

Koska syklomaattinen monimutkaisuus osoittaa linerisesti riippumattomat reitit ohjelman kautta, sitä enemmän syklomaattisen monimutkaisuuden arvo on, sitä enemmän testitapauksia tarvitset ohjelmallesi - tarvitsemiesi testitapausten lukumäärä vastaa tyypillisesti syklomaattista määrää monimutkaisuus tässä tapauksessa. Jos syklomaattisen kompleksisuuden arvo on pienempi (arvoa, joka on pienempi tai yhtä suuri kuin 10, pidetään mahtavana), koodin oletetaan olevan hyvin jäsennelty, erittäin testattava ja ylläpidettävä.

Kuinka voin tarkistaa syklomaattisen monimutkaisuuden?

Uudemmat Visual Studion versiot tarjoavat tukea syklomaattisen monimutkaisuuden laskemiseen Visual Studio IDE: n avulla. Voit laskea koodimittarit koko ratkaisulle tai valitsemillesi projekteille. Kun suoritat sen, Koodimittaritulokset-ikkuna näyttää koodianalyysin tulokset, jotka on järjestetty ylläpitokelpoisuusindeksiin, syklomaattiseen monimutkaisuuteen, periytymissyvyyteen, luokkakytkentään ja myös koodiriveihin. Tässä viestissä tutkitaan syklomaattista monimutkaisuutta ja esitän keskustelun muista asioista myöhemmin täällä.

Katso nyt alla olevaa koodinpätkää.

private void DisplayMessage (merkkijono str)

       {

Console.WriteLine (str);

       }

Kun lasket DisplayMessage-menetelmän syklomaattisen monimutkaisuuden Visual Studion avulla, se näyttää arvon 1. Harkitse nyt tätä menetelmää, joka sisältää tarkistuksen, onko menetelmälle argumenttina annettu parametri tyhjä vai tyhjä.

private void DisplayTextMessage (merkkijono str)

       {

jos (! string.IsNullOrEmpty (str))

Console.WriteLine (str);

       }

Jos suoritat ratkaisun Code Metrics -sovelluksen uudelleen, huomaat, että DisplayTextMessage-menetelmän syklinen monimutkaisuus on 2.

Kuinka voin vähentää syklomaattista monimutkaisuutta koodissa?

Vaikka joissakin tapauksissa on vaikea omaksua tietty strategia koodisi syklomaattisen monimutkaisuuden vähentämiseksi, koska ehdolliset rakenteet saattavat johtua siitä, että se on ominaista ongelmallesi, voit käyttää erilaisia ​​strategioita pienemmän syklomaattisen monimutkaisuusarvon saavuttamiseksi. Kaksi lähestymistapaa, joita sinun tulisi noudattaa suuren syklomaattisen monimutkaisuuden lieventämiseksi, ovat yksikkötestejä ja koodin uudelleen korjaamista. Vaikka yksikötestit auttavat minimoimaan riskit, sinun tulisi hyödyntää koodin uudelleenkäsittelyä, jotta koodisi olisi vähemmän monimutkainen, helpompi testata ja ylläpitää.

Voit vähentää ohjelmasi syklomaattista monimutkaisuutta korvaamalla ehdolliset rakenteet polymorfismilla. Polymorfismia käytettäessä koodiin voi lisätä paljon joustavuutta - koodistasi tulee testattavampi ja voit lisätä, muokata tai jopa poistaa ehtoja muuttamatta koodia paljon. Pohjimmiltaan, mitä pienempi syklomaattisen monimutkaisuuden arvo, sitä enemmän koodisi on helppo lukea, testata ja ylläpitää. Joissakin tapauksissa suosittelen, että hyödynnät käyttäytymissuunnittelumalleja, kuten Strategian suunnittelumalli, koodin syklomaattisen monimutkaisuuden vähentämiseksi.

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