Первый подход больше fail-fast , что увеличит вероятность того, что вы найдете источник вашей ошибки быстрее. Подумайте об этом так: если ваш журнал ошибок начинает сообщать вам, что возникло несколько ошибок, потому что вы пытаетесь добавить людей с нулевыми именами, вы захотите узнать, откуда появились нулевые имена этих людей. , право? В зависимости от того, как устроена ваша система, возможно, что человек был создан за несколько миль от того места, где он добавляется в услугу. Таким образом, вы не знаете, какое из четырех тысяч мест в вашем коде создает людей без имен.
Так что, если бы мне пришлось выбирать, я бы выбрал первый вариант.
Конечно, это зависит от вашей бизнес-модели. Если человек, имеющий нулевое имя, является совершенно законной вещью, которую нужно создать, когда вы находитесь на этапе ввода данных, и только когда вы готовитесь сохранить информацию этого человека, вы хотите убедиться, что он прошел проверку, то это другая история. В этом случае вам может даже потребоваться создать класс ValidatedPerson
, который охватывает Person
, но указывает на безопасный для типов способ, что метод addPerson
может быть вызван, только если кто-то прошел процесс проверки, потому что единственный способ создать ValidationPerson
- это специальный метод validate
, который проверяет имя человека.