我有一個Employee類。我希望能夠在保存它之前驗證它(),以確保所有字段都填充了有效值。 類的用戶可能在調用Save()之前調用Validate(),或者直接調用Save(),然後Save()將調用Validate(),如果驗證失敗可能會拋出異常。從驗證功能回覆額外信息的最佳做法
現在,我的(主要)問題是這樣的;
如果我的Validate()函數返回一個簡單的布爾值,那麼我該如何告訴該類的用戶什麼是錯誤的,即「電子郵件沒有填充」,「ID不唯一」等。爲了這個目的,我只想錯誤字符串傳遞給人類用戶,但如果我想要一個錯誤代碼列表(除了使位圖更符合邏輯),原理是相同的。
- 我可以在我的驗證功能中使用一個參數,但我明白這是皺眉。
- 而不是返回一個布爾,我可以從我的函數返回一個字符串數組,並只是測試它是否爲空(意思是沒有錯誤) - 但這似乎凌亂,不正確。
- 我可以創建一個Struct來返回此方法,包括一個bool和一個帶錯誤消息的字符串數組,但看起來很笨重。
- 我可以返回一個錯誤代碼而不是一個布爾的位圖並查找它,但這似乎相當過分。
- 我可以在容納錯誤的對象上創建一個公共屬性「ValidationErrors」。然而,這要依賴我在讀取之前調用Validate(),或者從Property()明確調用Validate,這有點浪費。
我的具體程序是在C#中,但這看起來像一個相當通用的「最佳實踐」的問題,我相信我應該知道答案。任何建議感激地收到。
+1 - 你打敗了我。 – 2009-06-25 12:21:43
你是對的,我應該對我的錯誤消息進行構建,併爲他們建立一箇中央存儲庫,在那裏我可以查找他們的「用戶友好」版本等。 – Frans 2009-06-25 15:10:47