Ну, прошло много времени с тех пор, как этот вопрос был опубликован, но я бы хотел дать другую точку зрения на эту тему.
Используя конкретный пример, который вы разместили, ИМХО вам следует выполнить проверку, но другим способом.
Ключ к архивированию валидации лежит в самом вопросе. Подумайте об этом: вы имеете дело с именами, а не со строками.
Строка - это имя, когда оно не равно нулю. Мы также можем подумать о дополнительных характеристиках, которые делают строку именем: она не может быть пустой или содержать пробелы.
Предположим, вам нужно добавить эти правила проверки: если вы придерживаетесь своего подхода, вы в конечном итоге загромождаете свой сеттер, как сказал @SingleShot.
Кроме того, что бы вы сделали, если бы более чем один объект домена имел установщик setName?
Даже если вы используете вспомогательные классы как @dave, код все равно будет дублироваться: вызовы вспомогательных экземпляров.
Теперь задумайтесь: что, если все аргументы, которые вы когда-либо могли получить в методе setName, были действительными? Никакая проверка не будет нужна наверняка.
Возможно, это звучит слишком оптимистично, но это можно сделать.
Помните, что вы имеете дело с именами, так почему бы не смоделировать концепцию имени?
Вот ванильная, фиктивная реализация, чтобы показать идею:
public class Name
public static Name From(String value) {
if (string.IsNullOrEmpty(value)) throw new ...
if (value.contains(' ')) throw new ...
return new Name(value);
}
private Name(string value) {
this.value = value;
}
// other Name stuff goes here...
}
Поскольку проверка происходит в момент создания, вы можете получить только действительные экземпляры Name. Нет способа создать экземпляр Name из «недопустимой» строки.
Централизован не только проверочный код, но и исключения создаются в контексте, который имеет для них значение (создание экземпляра Name).
Вы можете прочитать о великолепных принципах дизайна в «Принципах проектирования позади Патагонии» Эрнана Уилкинсона (пример названия взят из него). Обязательно ознакомьтесь с ESUG 2010 Video и слайдами презентации
Наконец, я думаю, вам может показаться интересной статья Джима Шора "Fail Fast" .