LCOM всегда равен 1 в JArchitect и Metrics Reloaded

Итак, я изучал паттерны проектирования и в контексте принципа единой ответственности попытался рассчитать недостаток связности методов (LCOM) в Java, используя Metrics Reloaded и JArchitect. Обе программы всегда вычисляют LCOM равным 1, хотя в некоторых случаях это явно не так. Даже приведенный ниже стандартный пример низкой связности имеет LCOM, равный 1, в этих программах:

      package com.StyleM;

public class NumberManipulator {
    private int number;

    public int numberValue() {
        return number;
    }
    public void addOne() {
        number++;
    }
    public void subtractOne() {
        number--;
    }
}

Насколько я понимаю, LCOM в этом примере должен быть 1-(3/4) = 0,25, потому что всего 4 метода (включая конструктор) и 3 из них используют числовое поле. Что я делаю не так?

1 ответ

Для расчета LCOM используется следующая операция: количество некогерентных пар - количество когерентных пар. В вашем примере мы бы сказали, что результат равен 0-3=-3.
В общем, обычно в результате не появляются отрицательные значения для LCOM, поэтому в случае отрицательного числа в результате мы говорим, что LCOM = 0 , что является оптимальным.
Что касается результата, который получается в результате программ, я бы сказал, что у них просто другая реализация для его расчета.

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