какое шоу метрики (метрик) различие между объектно-ориентированным и процессуальным кодексом

Какая метрика (метрики) могла помочь указать, что у меня есть процессуальный кодекс вместо объектно-ориентированного кода? Я хотел бы иметь ряд простых метрик, которые указывают с высокой вероятностью, что проанализированный код содержит процедурные сценарии транзакции и анемичную модель предметной области вместо следующих звуковых объектно-ориентированных принципов разработки.

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

Спасибо, Thomas!

6
задан herrwieger 19 March 2010 в 22:24
поделиться

2 ответа

Сплоченность и сцепление


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

«Сплоченность относится к родству» компонентов модуля. Компонент с высокой степенью сплоченности - это компонент, выполняющий одну базовую функцию. Разделить связный компонент должно быть сложно. Сплоченность можно классифицировать с помощью порядковой шкалы, которая варьируется от наименее желательной категории (случайная сплоченность) до наиболее желательной (функциональная сплоченность) ».

Классическим измерением сплоченности является « Недостаток сплоченности в методах »Чидамбера и Кемерера. "(LCOM) .Вы также можете посмотреть Ответ для класса (RFC) , который измеряет связь между методами в классе.

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

Вы не сказали, какой язык вы используете, но есть некоторые инструменты, созданные на основе Eclipse, поэтому быстрый поиск в Интернете объектно-ориентированных показателей на основе Eclipse должен дать что-то полезное

1
ответ дан 17 December 2019 в 20:30
поделиться

Некоторые просто не в себе

  • относительное количество интерфейсов, абстрактных классов и т. Д. (Подробнее ОО)
  • Использование переменных-членов на метод (больше ОО)
  • количество методов, в которых одна и та же переменная-член используется (больше OO)
  • количество статических переменных и методов (более процедурные, особенно статические методы (применяются некоторые исключения, например, фабрики))
  • строки кода на класс (более процедурные)

Они не убедитесь, что ваш код более объектно-ориентированный или более процедурный, но, возможно, это поможет.

1
ответ дан 17 December 2019 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: