Проверка примитивных аргументов и «сложных данных»
Проверка аргументов
При написании метода аргументы должны проверяться в первую очередь перед выполнением каких-либо операций. Например, допустим, у нас есть класс, представляющий людей:
public class Person
{
public readonly string Name;
public readonly int Age;
public class Person(string name, int age)
{
this.Name = name;
this.Age = age;
}
}
Что не так с этим классом Person? имя и возраст не проверяются до того, как их значения заданы как поля Person. Что я подразумеваю под «подтверждено»? Оба аргумента должны быть проверены, чтобы их значения были приемлемыми. Например, что если значение name является пустой строкой? Или возрастное значение -10?
Проверка аргументов выполняется путем генерирования ArgumentExceptions или производных исключений, когда значения неприемлемы. Например:
public class Person(string name, int age)
{
if (String.IsNullOrEmpty(name))
{
throw new ArgumentNullException
("name", "Cannot be null or empty.");
}
if (age <= 0 || age > 120)
{
throw new ArgumentOutOfRangeException
("age", "Must be greater than 0 and less than 120.");
}
this.Name = name;
this.Age = age;
}
Это правильно проверяет аргументы, которые получает конструктор Person.
Скука и тошнота
Поскольку вы проверяли аргументы в течение длительного времени (верно?), Вы, вероятно, устали писать эти операторы if (....) в качестве аргумента ... во всех ваших методах.
Что мы можем сделать, чтобы избежать написания String.IsNullOrEmpty несколько раз в вашем коде?