Итак, у меня есть класс с одним строковым параметром в его конструкторе:
public MyClass(string name)
{
this.Name = name;
}
но я никогда не хочу беспокоиться о том, чтобы кто-то инициализировал экземпляр MyClass именем NULL или строкой нулевой длины. Что лучше всего было проверить параметр? Со свойством или методом вы всегда можете просто ничего не делать, возвращать ноль или не устанавливать ничего, если указан неверный аргумент. Но после вызова конструктора экземпляр объекта уже создан независимо от того, были ли переданы допустимые аргументы.
Является ли исключение, как показано ниже, лучшим способом? Или есть какой-то другой способ, который более предпочтителен?
public MyClass(string name)
{
if (name == null | name == "") throw new ArgumentException("Name can not be null or blank", "name");
this.Name = name;
}
Конечно, я всегда мог бы установить имя на какое-то значение по умолчанию, например «Безымянный MyClass», если аргумент недействителен, но в этом случае я бы предпочел просто предотвратить недопустимое имя, а затем попытаться принять какое-то альтернативное поведение.