2012-01-03

VerifyArgs: Проверка параметров методов

Несколько недель назад, работая над очередным .NET-проектом, я обратил внимание на повсеместно используемый класс для простых проверок параметров методов (например, проверок на null, пустую строку/коллекцию и т.д.). Код проверки выглядел примерно так (тут CheckUtil — статический класс со вспомогательными методами для проверок):

Этот код проверяет "str" на null/пустоту и в случае ошибки выбрасывает исключение с информацией об имени ошибочного параметра. Мне в подобном коде не нравится тот факт, что имя параметра приходится передавать отдельно — это неудобно, засоряет код, плюс рефакторинг усложняется (при переименовании параметров метода нужно не забывать менять значения в строках). А встречаются такие утилитарные классы почти в каждом проекте. Поэтому мне в голову пришла идея написать библиотеку для проверок параметров методов, в которой не нужно было бы явно передавать имена параметров.

Моя идея заключалась в использовании анонимных объектов для передачи значений параметров методов вместе с их именами. Например, код "new { str }" создаст новый объект анонимного типа со свойством "str", которое вернёт значение параметра "str"; впоследствии из этого объекта можно получить как имя параметра, так и его значение для проверки.

Библиотека VerifyArgs использует эту идею для проверки значений параметров методов. Вот пример кода, использующего VerifyArgs:

Кроме того, что VerifyArgs не требует явной передачи имён проверяемых параметров, она также позволяет выполнять проверки сразу для нескольких параметров методов и использовать цепочки вызовов для выполнения нескольких проверок сразу. Работает библиотека быстро, потому что вместо reflection использует кодогенерацию во время выполнения.

Скачать VerifyArgs можно используя NuGet или со страницы на CodePlex (там же можно найти подробную информацию о библиотеке).

Комментариев нет:

Отправить комментарий