2010-08-26 105 views
1

非常简单的问题,但我想开始使用一致的命名约定验证方法,我想不出最好的方法!验证命名约定? C#

人们倾向于使用IsDataValid()风格吗?还是还有其他更具描述性和意义的其他内容?

干杯

+0

你在做这样的事情:http://conditions.codeplex.com/ – cofiem 2010-08-26 13:19:33

回答

2

这取决于您的验证方法做什么。

如果它返回一个布尔值,那么可能以Is开始并以Valid结尾是一个很好的开始。对于布尔调用使用is通常会导致if语句中的可读代码。

如果您的验证方法抛出异常,那么我通常会用Check之类的东西来启动方法名称。

但是,也值得考虑(因为方法应该通常使用动词)正在开始方法名称与Validate。样式通常更适用于属性。

1

人们倾向于使用IsDataValid()风格吗?

当方法返回一个布尔值时,我通常使用'Is'MethodName样式。在命名方面完全可以接受。很多时候数据验证是在属性集合内完成的,而不是在方法中完成,所以在这种情况下,您不需要更改属性名称来指示验证数据集合。

这里是一个链接,让一些通用命名指南,你可能会觉得有趣,以及:

命名原则: http://msdn.microsoft.com/en-us/library/xzf533w0(v=vs.71).aspx

3

与涉及命名约定什么,有没有这样的事,作为一个right答案,但是验证方法存在很多常见问题,这些问题适用于某种方法,即:

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

一种方法,我发现是有用的是有一个单独的验证类我想验证实现公共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 
    } 
}