Что означает «Глубина наследования» для методов?

#c# #visual-studio-2010 #code-metrics #visual-studio-power-tools

#c# #visual-studio-2010 #код-метрики #visual-studio-power-tools

Вопрос:

Я только что установил Visual Studio Power Tool для анализа кода и средство просмотра результатов. Отличные инструменты, кстати!

Когда я нажимаю «Проанализировать решение», я получаю результаты:

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

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

У кого-нибудь есть объяснение того, что это может означать?

Ответ №1:

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

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

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

Комментарии:

1. Спасибо, Рик! Это то, о чем я думал, но это было непонятно для меня в примере, который я рассматривал.

Ответ №2:

Вот отличное объяснение (с картинками!) глубины наследования:

http://www.nayyeri.net/depth-of-inheritance-for-wpf-and-windows-forms-applications

Комментарии:

1. В этой ссылке не обсуждается глубина наследования для методов, в чем и заключается вопрос.

2. В дополнение к тому, что сказал Рик, если бы я мог также внести предложение. Использование ссылки для ответа на вопрос — это здорово. Но, если ссылка когда-либо исчезнет (как это обычно бывает со ссылками в Интернете), мы ничего не знаем о том, что в ней сказано. Вместо этого выделите соответствующие пункты ссылки и процитируйте их в своем ответе. Таким образом, каждый может получить ответ, он сохраняется вместе с вопросом, и если люди хотят большей глубины, они могут перейти непосредственно по ссылке.

3. Отличная картина! Я понимаю глубину наследования. Где я отклеился, так это разные значения it в методах одного и того же класса.

4. @trante Спасибо за предупреждение. Я нашел то, что, по-видимому, является местом, куда был перемещен этот post. Я сохранил исходную ссылку, поскольку вы можете посмотреть это на archive.org но я добавил новую ссылку к сообщению. Еще раз спасибо.

5. И обновленная ссылка теперь исчезла. Archive.org версия здесь