Это поднимает интересную загадку для моего в значительной степени пред-TDD мышления.
Условно моя интерпретация ООП предполагает, что класс вашего автомобиля должен представлять реальность.Это означает, что автомобиль должен приобретать свой цвет при создании, и он не может быть изменен после этого, кроме как каким-то «специальным» методом, который перекрашивает автомобиль, и только тогда, когда ваша бизнес-логика позволяет это.
Я полагаюОтвет TDD заключается в том, что вы не можете моделировать реальность, и вместо этого вам следует смоделировать область допустимых поведенческих изменений в вашем приложении.Возможно, автомобиль является гипотетическим будущим автомобилем в онлайн-приложении для заказа или моделью в игре, которая может плавно менять цвет.В любом случае, описанный выше подход Paeleo-OOP недопустим в философии TDD.
Чтобы попытаться ответить непосредственно на ваш вопрос, я бы сказал, что свойство color должно быть установлено с использованием максимально строгой семантики, которая соответствует вашейбизнес правила.Если какой-либо из ваших текущих известных элементов спецификации требует, чтобы у автомобиля была возможность динамически менять цвет, закодируйте его как устанавливаемое свойство.В противном случае он принадлежит конструктору.Будьте готовы отменить это решение, как только кто-то решит, что спецификация должна быть изменена для следующей итерации вашего проекта.