Расчет метрик кода в Visual Studio - PullRequest
38 голосов
/ 09 января 2010

Какой предпочтительный диапазон баллов для расчета метрик кода для следующих

  • Индекс ремонтопригодности
  • Цикломатическая сложность
  • Глубина наследования
  • класс сцепления

1 Ответ

64 голосов
/ 09 января 2010

Теоретически оптимальные значения:

  • Индекс ремонтопригодности: 100. Более высокие значения указывают на лучшую ремонтопригодность.
  • Цикломатическая сложность: 1. Количество различных путей, которые может пройти код.
  • Глубина наследования: 1. Количество определений классов выше этого в дереве наследования, не включая интерфейсы.
  • Связывание классов: 0. Число других объектов, от которых зависит данный объект.

Нет жестких и быстрых «хороших» диапазонов, хотя можно сделать несколько общих утверждений.

  • Высокая цикломатическая сложность для каждого метода предполагает, что метод становится слишком сложным.
  • Глубина наследования, превышающая 3 или 4 (для ваших собственных классов, а не для фреймворка), является признаком проблемы с тем, что вы, возможно, излишне представляете абстрактные отношения, которые на самом деле не относятся к области вашего программного обеспечения.
  • Связывание низкого класса в целом лучше, но иногда это неизбежно. Насколько это возможно, вы должны определенно минимизировать зависимость между пространствами имен, поскольку здесь гораздо меньше причин для зависимости.

Проект может достичь всех четырех значений одновременно, практически ничего не делая и будучи бесполезным: программное обеспечение, которое ничего не делает и ни от чего не зависит, безусловно, обслуживаемо, но не очень хорошо использует клиентские доллары.

Следовательно, вся сложность является компромиссом: дополнительная, так называемая присущая сложность кодирует большую сложность в программе, позволяя ей расширить набор функций. Чего вы хотели бы избежать, так это случайной сложности, вызванной плохой или несовершенной реализацией.

...