Чи є показники для згуртованості та зв'язку?


34

Чи є метрика, аналогічна мірі складності McCabe, щоб виміряти, наскільки згуртований порядок, а також наскільки вільно (або щільно) поєднати рутину з іншим кодом у тій же кодовій базі?


Відповіді:


29

Я думаю, що метрику, яку ви шукаєте, є LCOM4, ​​хоча вона стосується більше класів.

Sonar це добре пояснює тут :

... метрика: LCOM4 (відсутність методів згуртованості) для вимірювання рівня згуртованості класів. Інтерпретувати цю метрику досить просто, оскільки значення 1 означає, що клас має лише одну відповідальність (хороший), а значення X означає, що клас, ймовірно, має X обов'язки (погано) і його слід переробити / розділити.

Тут немає ніякої магії, лише здоровий глузд. Візьмемо простий приклад з класом Driver. У цьому класі є два поля: "Автомобіль" та "Мозок" та п'ять методів: drive (), goTo (), stop (), getAngry () та drinkCoffee (). Ось графік залежності між цими компонентами. Існує три блоки пов'язаних компонентів, тому LCOM4 = 3, тому, здається, клас має три різні обов'язки і порушує Принцип єдиної відповідальності. http://i.stack.imgur.com/2527G.png

...

Це чудовий інструмент, якщо ви можете його використовувати. :)


@OnorioCatelci Немає проблем. :)
Олексі

Просто дуже погано, що вони не вживаються в тому, як вони обчислюють показник.
Оноріо Катенач

3
Це може допомогти з цим: aivosto.com/project/help/pm-oo-cohesion.html
Oleksi

З цікавості, як би ви відреагували на цю діаграму, щоб дотримуватися Єдиного принципу відповідальності? brain.setAngry(driver)? car.applyBreaks(driver)?
Філ

Я сумніваюся, що метрика згуртованості на основі коду може справді свідчити про згуртованість рівня інтерфейсу і навіть може сприяти поганому програмуванню: mortoray.com/2015/04/29/…
edA-qa mort-ora-y

16
  • Інші зв'язки: Кількість обов'язків
  • Різний зв'язок: Кількість залежностей
  • Нестабільність: Співвідношення еферентної муфти до загальної муфти (Aferen + Efferent).

Нестабільність підтримується в різних інструментах метрики коду.


Спасибі @ Брайан - саме таку річ, яку я сподівався знайти.
Оноріо Катенач
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.