Расчет метрик кода в Visual Studio

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

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

person Asad    schedule 09.01.2010    source источник


Ответы (1)


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

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

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

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

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

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

person John Feminella    schedule 09.01.2010
comment
На самом деле нет твердых и быстрых хороших диапазонов. Особенно, если вы используете что-то вроде деревьев выражений или новое ключевое слово dynamic, связанное с вашим классом. - person R. Martinho Fernandes; 09.01.2010