Obliczanie metryki kodu w Visual Studio

Jaki jest preferowany zakres punktacji dla obliczenia metryki kodu dla następującego

  • Wskaźnik Konserwacji
  • Złożoność Cyklomatyczna
  • głębokość dziedziczenia
  • Sprzęgło klasy
Author: Asad Butt, 2010-01-09

1 answers

Teoretycznie optymalne wartości to:

  • wskaźnik konserwacji: 100. Wyższe wartości wskazują na lepszą konserwację.
  • złożoność Cyklomatyczna: 1. Liczba różnych ścieżek, które może przejść kod.
  • głębokość dziedziczenia: 1. Liczba definicji klas powyżej tej w drzewie dziedziczenia, nie licząc interfejsów.
  • Klasa sprzężenia: 0. Liczba innych podmiotów, od których ta jednostka jest zależna.

Nie ma twardych i szybkich "dobrych" zakresów, chociaż można sformułować pewne ogólne stwierdzenia.

  • Wysoka złożoność cyklomatyczna według metody sugeruje, że metoda staje się zbyt skomplikowana.
  • posiadanie głębokości dziedziczenia większej niż około 3 lub 4 (własnych klas, a nie frameworków) jest znakiem kłopotów, że możesz niepotrzebnie reprezentować abstrakcyjne relacje, które tak naprawdę nie są w domenie Twojego oprogramowania.
  • Sprzężenie niskiej klasy jest ogólnie lepsze, ale czasami jest nieuniknione. W zakresie możliwe, zdecydowanie powinieneś zminimalizować zależność między przestrzeniami nazw, ponieważ tutaj jest znacznie mniej powodów dla zależności.

Projekt może osiągnąć wszystkie cztery wartości jednocześnie, zasadniczo nie robiąc nic i będąc bezużytecznym: oprogramowanie, które nic nie robi i od niczego nie zależy, jest z pewnością możliwe do utrzymania, ale niezbyt dobre wykorzystanie dolarów klienta.

Dlatego cała złożoność jest kompromisem: dodatkowa tak zwana inherentna złożoność koduje więcej wyrafinowanie w programie, co pozwala na rozszerzenie zestawu funkcji. To, czego chciałbyś uniknąć, to przypadkowa złożoność wprowadzona przez słabą lub wadliwą implementację.

 63
Author: John Feminella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-09 15:15:20