Поделиться через


Метрики кода — глубина наследования (DIT)

В этой статье вы узнаете о одной из метрик, разработанных специально для объектно-ориентированного анализа: глубина наследования. Глубина наследования, также называемая глубиной дерева наследования (DIT), определяется как "максимальная длина от узла до корня дерева" CK. Это можно увидеть с простым примером. Создайте проект библиотеки классов и перед написанием кода вычислите метрики кода, выбрав "Анализ > метрик кода" для решения.

Глубина наследования примера 1

Так как все классы наследуются от System.Object, глубина составляет 1 в настоящее время. Если вы наследуете от этого класса и изучите новый класс, вы увидите результат:

Глубина наследования 2

Обратите внимание, что нижний узел в дереве (Class2 в данном случае), чем выше глубина наследования. Вы можете продолжать создавать дочерние элементы и вызывать глубину, чтобы увеличить столько, сколько вы хотите.

Предположения

Глубина наследования определяется тремя фундаментальными предположениями CK:

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

  2. Более глубокие деревья связаны с более сложной структурой, так как используются дополнительные классы и методы.

  3. Более глубокие классы в дереве имеют больший потенциал для повторного использование унаследованных методов.

Предположения 1 и 2 говорят вам, что наличие более высокого числа для глубины плохо. Если это место закончилось, вы будете в хорошей форме; Однако предположение 3 указывает, что более высокое число для глубины подходит для потенциального повторного использования кода.

Анализ

Вот как вы читаете метрику глубины:

  • Низкое число для глубины

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

  • Большое число для глубины

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

Анализ кода

Анализ кода включает категорию правил обслуживания. Дополнительные сведения см. в разделе "Правила обслуживания". При использовании устаревшего анализа кода набор правил расширенного руководства по проектированию содержит область обслуживания:

Глубина наборов правил разработки наследования

Внутри области доступности обслуживания используется правило для наследования:

Глубина правила обслуживания наследования

Это правило выдает предупреждение, когда глубина наследования достигает 6 или больше, поэтому это хорошее правило, чтобы предотвратить чрезмерное наследование. Дополнительные сведения о правиле см. в разделе CA1501.

Объединение всего вместе

Высокие значения для DIT означают, что потенциал ошибок также высок, низкие значения снижают вероятность ошибок. Высокие значения для DIT указывают на больший потенциал повторного использования кода с помощью наследования, низкие значения предполагают меньшее использование кода, хотя наследование используется. Из-за отсутствия достаточных данных в настоящее время для значений DIT не принято. Даже исследования, выполненные недавно, не нашли достаточных данных, чтобы определить жизнеспособное число, которое можно использовать в качестве стандартного числа для этой метрики Shatnawi. Хотя эмпирические доказательства для его поддержки отсутствуют, некоторые ресурсы предполагают, что DIT около 5 или 6 должно быть верхним пределом. Например, ознакомьтесь со статьей https://www.devx.com/architecture-zone/45611/.

Цитаты

OK

Chidamber, S. R. и Kemerer, C. F. (1994). Набор метрик для объектно-ориентированного проектирования (ТРАНЗАКЦИИ IEEE по программному проектированию, vol. 20, No 6). Получено 14 мая 2011 года из веб-сайта Университета Питтсбурга: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf

Кришна

Субрамам, Р. и Шрина, М. С. (2003). Эмпирический анализ метрик CK для сложности объектно-ориентированного проектирования: последствия для дефектов программного обеспечения (транзакции IEEE в области программного обеспечения, vol. 29, No 4). Извлечено 14 мая 2011 года, первоначально полученное из Университета Массачусетса Дартмут веб-сайта https://ieeexplore.ieee.org/abstract/document/1191795

Шатнави

Шатнави, Р. (2010). Количественное исследование допустимых уровней рисков объектно-ориентированных метрик в системах с открытым исходным кодом (транзакции IEEE по программному проектированию, vol. 36, No 2).