Мне интересно, где и как часто - в аргументах метода проверки кода.
В приведенном ниже классе примеров (библиотека .dll), как вы думаете, лучший способ? Предположим, что я хочу проверить, что некоторый объект не может быть null
(но это может быть любая другая проверка, необходимая для правильного запуска метода). Лучше ли проверять его только один раз в пункте 1., в общедоступном методе, доступном для пользователя, а позже "доверяй себе", что в других частных методах он не будет нулевым или, лучше быть немного параноидальным и проверять его каждый (в пунктах 2. 3. и 4.)
Проверка его перед использованием объекта (в пунктах 2, 3, 4) защитит меня в будущем, если я решит что-то изменить в классе, используя эти частные методы и "забудьте" передать действительный объект. Также мне не нужно помнить о проверке, если я добавлю новый публичный метод в будущем. С другой стороны, он снова и снова проверяет одно и то же условие. Или, может быть, у вас есть другие предложения?
public class MyClass()
{
public MyClass()
{
}
public void ProcessObject(SomeObject obj)
{
//1. if (obj == null) throw new ArgumentException("You must provide valid object.");
DoSomething(obj);
DoMore(obj);
DoSomethingElse(obj);
}
private void DoSomething(SomeObject obj)
{
//2. if (obj == null) throw new ArgumenException("You must provide valid object.");
//do something with obj...
}
private void DoMore(SomeObject obj)
{
//3. if (obj == null) throw new ArgumentException("You must provide valid object.");
//do something with obj...
}
private void DoSomethingElse(SomeObject obj)
{
//4. if (obj == null) throw new ArgumentException("You must provide valid object.");
//do something with obj..
}
}