Аргументы проверки
Обновлен: Ноябрь 2007
Следующие рекомендации помогут обеспечить правильность выполнения проверки аргументов.
Проверяйте аргументы, передаваемые открытым, защищенным или явно реализованным членам. При неудачном исходе проверки вызывайте исключение System.ArgumentException или один из его производных классов.
Данная рекомендация не требует, чтобы код программы проверки содержался в члене, видимом для всех. Допускается передача аргументов внутреннему методу, который осуществляет проверку.
Если передается аргумент "null" ("Nothing" в Visual Basic), но член не поддерживает получение этого значения, вызывайте исключение System.ArgumentNullException.
Проверяйте параметры перечислений.
Нельзя предполагать, что аргументы перечислений являются значениями, определенными в перечислении, так как среда CLR поддерживает приведение любого целого значения к значению перечисления независимо от того, определено ли это значение в перечислении.
Не используйте метод System.Enum.IsDefined(System.Type,System.Object) для проверки диапазона перечисления, так как он основан на типе перечисления времени выполнения, и это перечисление может изменяться от версии к версии.
В более поздней версии библиотеки могут быть добавлены значения к поставляемому перечислению. Использование метода IsDefined для проверки данных может оказаться опасным, так как существующий код (который не обрабатывал новое значение) будет считать новое входное значение допустимым, поскольку метода IsDefined возвращает true для нового значения. Убедитесь, что входное значение находится в диапазоне значений, поддерживаемых программой; в противном случае вызывайте исключение.
Обратите внимание, что изменяемые аргументы могут получить другое значение уже после того, как они были проверены.
Если необходимо обеспечить безопасность члена, создайте частную копию изменяемого объекта и используйте ее для проверки и обработки. Это имеет отношение только к изменяемым данным. Неизменяемые данные, такие как объекты Uri, не нужно копировать.
Фрагменты — © Корпорация Майкрософт (Microsoft Corp.), 2005. Все права защищены.
Фрагменты — © Addison-Wesley Corporation. Все права защищены.
Дополнительные сведения о рекомендациях по разработке см. в книге "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries", Krzysztof Cwalina and Brad Abrams, Addison-Wesley, 2005.