“可能引发异常的验证” - 命名约定和语义

时间:2011-01-05 09:17:11

标签: validation exception naming-conventions standards

如果您在代码中验证某些内容,则可以使用返回值来表示出现问题,或者抛出异常。在我的控制器中,我有这样的例外验证:

 void DoSomething()
 {
     Validate();  // throws exception if something is wrong
     .....
 }

我想知道是否有一个共同的命名约定意味着在出现错误时抛出异常,这样我就不需要添加注释// throws exception if something is wrong并区别于if (!IsValid())

注意:validation-naming-conventions没有回答我的问题。

接受答案后更新:我从这个问题中学到了什么

  • AssertValid()或VerifyAndThrow()是好名字(tnx @hacktick)
  • 验证必须与上下文区分(警告或错误)
  • 卓越的验证作为一种契约或第二道防线是好的,它可能只存在于调试模式下,以确保周围的if (IsValid(...))不会错过任何东西(tnx @ Cody Gray) )

1 个答案:

答案 0 :(得分:2)

通常你会使用:

// for a validations that returns just plain yes no (true|false). in the case of a property use caching for the last validationresult.
bool IsValid

// for a validation that returns a list of errors of some sort (messagelist, id list, custom objects, whatever you need).
object Validate();

// validates and throws an exception if one or more error occured.
void ValidateAndThrow();

另外请务必考虑是否需要某种警告。例如,如果您验证您的注册DTO模型,并且想要警告用户密码是否较弱但是不想阻止用户在他选择时保存它。