У меня сегодня была дискуссия о рефакторинге этого (# 1)
public void MyFunc(object myArgument)
{
if(myArgument == null)
throw new ArgumentNullException("myArgument");
....
С этим (# 2)
//inside a shared assembly in a class called Guard
public static void AgainstArgumentNull(object obj, string message)
{
if (obj == null)
throw new ArgumentNullException(message);
}
public void MyFunc(object myArgument)
{
Guard.AgainstArgumentNull(myArgument, "myArgument");
....
Моя интуиция заключалась в том, что # 1 был лучше для следующегопричины:
- # 1 проще, чем # 2, в том смысле, что он не требует знания библиотеки Util, только базовые знания C #
- # 1 не устранят способность переименовывать reharperстрока, переданная в конструктор ArgumentNullException.
- # 2 увеличит зависимости для кода (должен иметь доступ к dll, содержащему dll)
- Трассировка стека не будет такой же для # 2, какэто было бы для # 1
Мои вопросы здесь: верна ли моя интуиция?Может ли тот факт, что мы генерируем исключение из другой сборки, не стать проблемой в некоторых сценариях?