验证命名约定?C#

ada*_*iko 3 c# standards

这个问题很简单,但是我想开始对验证方法使用一致的命名约定,我想不到最好的方法!

人们倾向于使用IsDataValid()样式吗?还是还有其他更具描述性和意义的东西?

干杯

Rya*_*ner 6

与任何涉及命名约定的事情一样,没有正确的答案,但是验证方法存在许多常见问题,这些问题适用于某种方法,即:

  • 如果一切正常,您通常只需要验证的布尔状态。
  • 如果出现问题,您通常需要了解问题的详细信息。
  • 您通常希望对象具有类似的验证方法。

我发现一种有用的方法是为我想要验证的每个模型对象都有一个单独的验证器类,它实现了一个公共IValidator接口,通常使用以下方法:

  • 一个接受要验证的对象的构造函数。
  • 一个名为 IsValid() 的属性用于验证对象,返回一个布尔值,但将特定错误存储在私有变量中,因此当您确实需要错误时不需要重新计算验证。
  • 名为 ErrorMessages 的属性,用于验证对象(如果尚未验证),并返回对象的错误列表。

这允许在您的业务逻辑中非常自然地使用:

BusinessObject obj = new BusinessObject();

// populate fields

BusinessObjectValidator objValidator = obj.GetValidator();

if (objValidator.IsValid) {
    obj.Save();
} else {
    foreach (var errorMessage in objValidator.ErrorMessages) {
        // output message
    }
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*rey 5

这取决于您的验证方法。

如果它返回一个布尔值,那么以开头Is和结尾可能Valid是一个不错的起点。使用isBoolean调用通常会导致if语句中的代码可读。

如果您的验证方法抛出异常,那么通常我会使用类似的方法来开始方法名称Check

但是,还需要考虑的是(方法通常应使用动词)以方法名开头Validate。该Is款式一般比较适用于性能。