我不知道如何構建這個問題,但我很想知道你們對下列情況有何看法以及哪一種你更喜歡。明確的行爲與檢查與隱性行爲
我們正在使用winforms在客戶端 - 服務器應用程序中工作。而且我們有一個控件,在填充另一個字段時會自動計算一些字段。所以我們有一個字段貨幣,當用戶填充時會決定自動填充另一個字段,也許更多的字段。
當用戶填充貨幣字段時,將根據用戶引入的字符串從緩存中檢索貨幣對象。如果在緩存中未找到輸入幣種,緩存對象將返回空引用。當要求應用程序層根據貨幣計算其他字段時,在進一步向下的情況下,如果給定一個空貨幣,則返回一個空特定字段。這種方式默認的隱含行爲是清除所有字段。這是預期的行爲。爲了更清楚地說明,當用戶輸入「無法使用的貨幣」時,他會得到通知,當然,還會清除取決於輸入貨幣的字段。這是通過將特定的控制值設置爲空來完成的。
我將調用顯式實現將驗證Currency對象爲null,在這種情況下,將顯式清除依賴字段。
我認爲後者版本更清晰,不易出錯,更易於測試。但它意味着一種冗餘。 前一個版本不太清楚,它暗示了應用程序層中的某些行爲,這些行爲未在測試中表達出來。也許在低層測試中,但是當需要修改下層時,如果給定一個空貨幣應該返回其他東西,我不認爲沒有動機的測試就會成爲阻礙在上層引入一個bug。
你們認爲什麼?
我知道我的解釋很蹩腳。對不起。貨幣緩存現在返回一個空對象。基於null,應用程序層對於依賴字段再次返回null,重新應用於視圖將清除控件 – Silviu 2010-03-21 11:10:40