Я читаю Agile PPP для C #, и в какой-то момент дядя Боб представляет интересные показатели по качеству дизайна:
Эти:
- H (relational cohesion) = (R + 1) / N, where:
- R = number of internal relations inside a component;
- N = количество классов внутри этого компонента.
- I (Instability) = Ce / (Ca + Ce), where:
- Ca = afferent couplings;
- Ce = эфферентные муфты;
- A (Abstractedness) = Na / Nc, where:
- Nc = number of classes;
- Na = количество абстрактных классов;
- D' (normalized Distance from main sequence) = abs(A + I - 1) / sqrt(2), where:
- "main sequence" is, inside an A vs I cartesian plot, the diagonal line formed by the positions where A + I = 1;
Самая интригующая часть (прямо из книги):
Описанные нами показатели успешно применяются в ряде проектов с 1994 года.
Несколько автоматических инструментов рассчитают их за вас, и их несложно вычислить вручную.
Также несложно написать простой сценарий оболочки, Python или Ruby, чтобы просматривать исходные файлы и вычислять их.
В качестве примера сценария оболочки вы можете загрузить
depend.sh
из раздела бесплатных программ objectmentor.
Мне не удалось найти этот depend.sh
скрипт, и я не уверен, согласен ли я с тем, что эти показатели легко вычислить вручную или с помощью какого-либо скрипта (я бы хотел использовать для этого Python, если это так).
Итак, вопросы:
- Есть ли бесплатный инструмент или скрипт для расчета показателей дяди Боба для кода C #? В Visual Studio есть некоторые метрики, но они разные, и я действительно не знаю и не забочусь, как их интерпретировать;
Как мне подойти к задаче по созданию собственного скриптаЕсть известный факт «регулярное выражение не может анализировать html», и мне интересно, поддается ли структура кода C # своего рода «простому скрипту» Дядя Боб предлагает, чтобы можно было рассчитать эти показатели. Стоит ли мне даже попробовать?