Jak změřit kód?

26. 8. 2020clock Vývoj - 2 minuty čtení

Když už jsem nedávno psal o tom, jak co nejsnáze přebrat aplikaci po předchozím dodavateli a na nic při tom nezapomenout, zmínil jsem se okrajově i o kvalitě kódu.

Samozřejmě existují na jeho analýzu různé nástroje. Vyvíjíte-li ale ve MS Visual Studiu, máte jeden přímo po ruce. Na záložce „Analyze“ si můžete nechat spočítat metriky kódu „Calculate Code Metric“. Schválně si to zkuste nad nějakým vaším projektem. Za pár minut zjistíte, jak na tom je. A abyste se v tom vyznali, uvedu krátce, co jednotlivé ukazatele znamenají.

Pokud jste tedy měli dostatek odvahy to nad svým projektem spustit, vypadne na vás tabulka, kde budou v první sloupci v hierarchickém uspořádání části analyzovaného kódu. První sloupec sice žádnou metriku nepočítá, ale už i z něho můžete vidět, jak vhodně či nevhodně máte jednolité třídy a namespace pojmenované a uspořádané.

V dalších sloupcích pak už vždy jednotlivé metriky se spočítanými hodnotami.

Maintainability Index (Index spravovatelnosti)

Tento ukazatel najdete ve druhém sloupci tabulky (hned za sloupcem s názvy částí kódu). Je to index vypočítaný z různých následujících metrik jako jsou například Cyclomatic Complexity a průměrný počet řádků kódu. Jedná se o hodnotu mezi 0 až 100. Čím větší je hodnota, tím je kód lépe spravovatelný.

20-100 – kód je spravovatelný

10-19 – kód je obtížně spravovatelný

0-9 – kód je velice špatně a složitě spravovatelný

Většinou budou mít více bodů ty komponenty, které jsou jednoduché. Například komponenty, které obsahují seznamy konstant, unit testy, apod. které nejsou přímo potřebné pro logiku a běh aplikace. Naopak horší skóre dosáhnete spíš tam, kde je logika aplikace. Protože co je složitější, je zákonitě i hůře spravovatelné a je i větší pravděpodobnost, že jste se v tom dopustili nějakých prohřešků.

Cyclomatic complexity (cyklomatická složitost)

Cyklomatická (podmínková) složitost je číslo vyjadřující složitost programu. Udává minimální počet lineárně nezávislých cest skrz zdrojový kód.

Pokud máte čistě lineární kód, kde se plní vždy všechny příkazy jeden za druhým bez jakéhokoliv vynechání některého z nich, tak máte jen jednu cestu, kterou lze ten kód projít. Pokud ale přidáte do kódu podmínku, která rozhoduje o tom, zda se má provést jedna část kódu nebo druhá, tak hned už máte možné cesty dvě. A tím se zvýší i složitost kódu.

Čím větší počet cest v programu (funkci, metodě nebo jiné části kódu, pro kterou se tento ukazatel počítá), tím vyšší je složitost kódu a pravděpodobnost, že v něm bude chyba. Tím samozřejmě rostou i nároky na údržbu takového kódu.

Takže čím vyšší číslo, tím horší.

Depth of Inheritance (Hloubka dědění)

Třída může být zděděná z jiné. Toto číslo určuje, z kolika tříd třída postupně dědila až k třídě základní.

Čím menší číslo, tím jednodušší a udržovatelnější kód.

Class coupling

Class coupling hodnotí provázanost třídy s jinými (přes parametry, interface, …). Čím méně provázání, tím méně ovlivní změna ve třídě své okolí a způsobí méně úprav nebo možných chyb.

Tudíž čím nižší číslo, tím lepší.

Line of code

Počet řádků kódu. Opět čím méně řádků, tím se kód lépe spravuje. Toto platí jak pro program jako celek, tak i pro jednotlivé metody, které by neměly přesahovat určitý mentálně snadno zpracovatelný rozsah kódu.

Jak sami vidíte, není to nic extrémně složitého. Na druhou stranu vám to dá rychlý přehled o vašem kódu a nemusíte si k tomu nic dalšího instalovat. Stačí jen kliknout. Tak proč to nevyužít.

Sdílet:

Autor článku

Miroslav Kopecký

Miroslav Kopecký