Чи є метрика, аналогічна мірі складності McCabe, щоб виміряти, наскільки згуртований порядок, а також наскільки вільно (або щільно) поєднати рутину з іншим кодом у тій же кодовій базі?
Чи є метрика, аналогічна мірі складності McCabe, щоб виміряти, наскільки згуртований порядок, а також наскільки вільно (або щільно) поєднати рутину з іншим кодом у тій же кодовій базі?
Відповіді:
Я думаю, що метрику, яку ви шукаєте, є LCOM4, хоча вона стосується більше класів.
Sonar це добре пояснює тут :
... метрика: LCOM4 (відсутність методів згуртованості) для вимірювання рівня згуртованості класів. Інтерпретувати цю метрику досить просто, оскільки значення 1 означає, що клас має лише одну відповідальність (хороший), а значення X означає, що клас, ймовірно, має X обов'язки (погано) і його слід переробити / розділити.
Тут немає ніякої магії, лише здоровий глузд. Візьмемо простий приклад з класом Driver. У цьому класі є два поля: "Автомобіль" та "Мозок" та п'ять методів: drive (), goTo (), stop (), getAngry () та drinkCoffee (). Ось графік залежності між цими компонентами. Існує три блоки пов'язаних компонентів, тому LCOM4 = 3, тому, здається, клас має три різні обов'язки і порушує Принцип єдиної відповідальності.
...
Це чудовий інструмент, якщо ви можете його використовувати. :)
brain.setAngry(driver)
? car.applyBreaks(driver)
?
Нестабільність підтримується в різних інструментах метрики коду.