Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье вы узнаете о одной из метрик, разработанных специально для объектно-ориентированного анализа: глубина наследования. Глубина наследования, также называемая глубиной дерева наследования (DIT), определяется как "максимальная длина от узла до корня дерева" CK. Это можно увидеть с простым примером. Создайте проект библиотеки классов и перед написанием кода вычислите метрики кода, выбрав "Анализ > метрик кода" для решения.
Так как все классы наследуются от System.Object, глубина составляет 1 в настоящее время. Если вы наследуете от этого класса и изучите новый класс, вы увидите результат:
Обратите внимание, что чем ниже узел в дереве (Class2 в данном случае), тем больше глубина наследования. Вы можете продолжать создавать дочерние элементы и увеличивать глубину настолько, насколько хотите.
Assumptions
Глубина наследования определяется тремя фундаментальными предположениями CK:
Чем глубже класс в иерархии, тем больше количество методов, которые он, вероятно, наследует, что затрудняет прогнозирование его поведения.
Более глубокие деревья предполагают большую сложность проектирования, поскольку в них задействовано больше классов и методов.
Более глубокие классы в дереве имеют больший потенциал для повторного использование унаследованных методов.
Предположения 1 и 2 говорят вам, что наличие более высокого числа для глубины плохо. Если бы на этом всё закончилось, всё было бы в порядке; однако третье предположение указывает, что более высокое значение глубины благоприятно для потенциального повторного использования кода.
Анализ
Вот как вы читаете метрику глубины:
Низкое число для глубины
Низкое число для глубины подразумевает меньшую сложность, но и возможность меньшего использования кода с помощью наследования.
Высокое значение для глубины
Большое число для глубины подразумевает больше возможностей повторного использования кода с помощью наследования, но и более высокую сложность с более высокой вероятностью ошибок в коде.
Анализ кода
Анализ кода включает категорию правил обслуживания. Дополнительные сведения см. в правилах обслуживания. При использовании устаревшего анализа кода набор правил расширенного руководства по проектированию содержит область обслуживания:
Внутри области доступности обслуживания используется правило для наследования:
Это правило выдает предупреждение, когда глубина наследования достигает 6 или больше, поэтому это хорошее правило, чтобы предотвратить чрезмерное наследование. Дополнительные сведения о правиле см. в разделе CA1501.
Объединение всего вместе
Высокие значения для DIT означают, что потенциал ошибок также высок, низкие значения снижают вероятность ошибок. Высокие значения для DIT указывают на больший потенциал повторного использования кода с помощью наследования, а низкие значения предполагают меньший потенциал повторного использования кода через наследование. Из-за отсутствия достаточных данных в настоящее время не существует общепринятого стандарта для значений DIT. Даже исследования, выполненные недавно, не нашли достаточных данных, чтобы определить жизнеспособное число, которое можно использовать в качестве стандартного числа для этой метрики Shatnawi. Хотя эмпирические доказательства для его поддержки отсутствуют, некоторые ресурсы предполагают, что DIT около 5 или 6 должно быть верхним пределом. Например, ознакомьтесь со статьей https://www.devx.com/architecture-zone/45611/.
Цитаты
CK
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 Transactions on Software Engineering, Vol. 29, No. 4). Извлечено 14 мая 2011 года, первоначально полученное из Университета Массачусетса Дартмут веб-сайта https://ieeexplore.ieee.org/abstract/document/1191795
Шатнави
Шатнави, Р. (2010). Количественное исследование допустимых уровней риска метрик объектно-ориентированных в системах с открытым исходным кодом (IEEE Transactions по разработке программного обеспечения, т. 36, № 2).