Как LCOM может быть рациональным числом?

Я был занят с LCOM и плагином Metrics в Eclipse. В котором я должен вручную рассчитать отсутствие единства класса и сравнить его с результатом метрик. Но этот плагин возвращает LCOM 1/3. Как LCOM может быть рациональным числом?

Потому что мне сказали, что

P:= количество пар разнородных методов

а также

Q:= количество похожих пар методов.

А также

if P>Q 
then LCOM = P - Q 
otherwise LCOM = 0

Это уравнение правильно? или мой плагин работает неправильно?

1 ответ

Существует несколько метрик LCOM, которые можно использовать, поэтому я могу предположить, что вы не имеете в виду тот, который используется этим плагином. Например, это метрики, используемые ndepend, и оба являются рациональными числами:

  • LCOM = 1 - сумма (MF) / M * F
  • LCOM_HS = (M - сумма (MF) / F) (M-1)

Куда:

  • M - количество методов (учитываются как статические методы, так и методы экземпляра, а также конструкторы);
  • F - количество переменных экземпляра;
  • MF - количество методов, обращающихся к конкретному полю экземпляра;
  • Sum (MF) - это сумма MF для всех полей экземпляра класса.

(Источник: ndepend.com)

Другие вопросы по тегам