Ответ (1)
Почему бы и нет? Двигатель нуждается в водителе, потому что он должен ввести ключ для автомобиля, а затем включить питание. Будет ли автомобиль делать такие вещи, как определение текущей скорости, если двигатель остановлен? Или автомобиль покажет оставшееся масло без включения его?
Некоторые цели программирования не смогут инициализировать своих акторов во время создания объекта, и это не потому, что это неправильный способ выполнения вещей , а потому, что это естественный, регулярный и / или семантически мудрый способ представления всего своего поведения.
Ответ (2)
Достойная документация по использованию класса будет вашим лучшим другом. Как и ответ на (1) , в этом мире есть некоторые вещи, которые нужно сделать, чтобы сделать их правильно, и это не проблема, а требование.
Проверка состояния объектов с использованием флагов также не является проблемой, это хороший способ повысить надежность ваших объектных моделей, потому что их собственное поведение и их потребители будут знать о том, что все сделано так, как ожидалось, или нет.