2010-08-26 138 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 
    } 
}