Во-первых, я согласен с @ i8abug.
Но я хотел пойти немного дальше, чтобы поговорить об архитектуре. Каждую из этих архитектурных разработок, например, управляемую доменом, следует рассматривать как не что иное, как предложение, и рассматривать их внимательно.
На каждом этапе вы должны спросить себя, каковы преимущества и недостатки данного вопроса в отношении вашего заявления.
Многие из них включают в себя добавление огромного количества кода и серьезное усложнение проектов с очень небольшой выгодой.
Точка проверки является ярким примером. Как сказал Стефан, принцип единоличной ответственности в основном говорит о том, что вам нужно создать целый набор других классов, цель которых состоит только в проверке состояния исходных объектов. Очевидно, что это добавляет много кода в приложение. Может быть, это сгенерировано для вас, может быть, вы должны написать это вручную. В любом случае, больше кода, как правило, означает, что он менее надежен и, конечно, означает, что его труднее понять.
Преимущество разделения всего этого состоит в том, что вы можете менять правила проверки. Хорошо. Недостатком является то, что теперь у вас есть 2 файла для просмотра и создания для каждого определения класса. т.е. больше работы. Ваше приложение должно поменять правила проверки? Возможно нет. Я бы даже сказал, что очень немногие делают.
Откровенно говоря, если вы пойдете по этому пути, то можете также определить все как структуру и позволить всем этим «вспомогательным» классам подкрасться назад, чтобы позаботиться о проверке, сохранении, настройке свойств и т. Д. класс почти ничего не покупает.
Все это говорит о том, что я склонен к самостоятельным занятиям. Другими словами, они знают, как их свойства связаны друг с другом, и знают, каковы допустимые значения. Они также могут выполнять операции над собой и своими детьми. Другими словами, они знают, что они есть. Это приводит к упрощенному кодированию и реализации. Это также приводит к точному знанию того, куда идти для модификации или изменения. Единственное разделение, которое я на самом деле делаю здесь, - это внедрение Inversion of Control для постоянства; что позволяет мне менять поставщиков данных во время выполнения; что было требованием для нескольких приложений, которые я сделал.
Дело в том, подумайте над тем, что вы делаете, и решите, действительно ли это лучший путь в вашей конкретной ситуации. Все эти «правила» программирования - всего лишь предложения.