Как рассчитывается корреляция в случаях, когда a! = B?
Если корреляция рассчитывается в основном по a и b, setCorrelation () следует удалить. Период. Корреляция должна быть рассчитана в конструкторе или в методе getCorrelation (). Один из принципов ООП заключается в группировании связанных данных и логики, поэтому вычисление корреляции должно в идеале выполняться в классе, который вы ловко назвали Correlation
. Если расчет чрезвычайно сложен, он может быть в другом месте (например, DIP), но вызов должен быть сделан из Correlation
.
Если корреляция не рассчитывается по a и b, я действительно не понимаю класс, поэтому «это зависит». Если a равно b, и кто-то вызывает setCorrelation (0.0), является ли контракт тихим игнорированием вызова и выходом корреляции на уровне 1.0 или для исключения? И, если я пишу код вызова, я нахожусь в затруднительном положении, так как я не знаю, что произойдет, если я попытаюсь установитьCorrelation (0.0), потому что я понятия не имею, что такое a и b, или везде, где я сделать звонок, я вынужден пойти if (getA().equals(getB()))
и т. д. ... или поймать исключение и сделать, э-э, что ??? Что нарушает DRY и именно поэтому ООП говорит, что логика и данные должны быть сгруппированы в классе.