舊的驗證代碼通常檢查一個布爾條件,如果該條件爲真則拋出異常。重構方法參數驗證代碼到合同 - 語句反轉問題
而是Contract.Requires(...)
做了相反的事情(通過檢查我們需要否定舊條件)。
我反駁舊代碼,有時會看到一些相當先進的布爾語句,顛倒它們並不容易,只是在做Contract.Requires(!(*old statements*))
看起來很糟糕,很混亂。
如果它有類似於Contract.RequiresNot()
的重構,那麼在這裏重構將更加清晰明瞭。
我們也不能添加靜態擴展方法。如果有人遇到這個問題,並找到一些很好的解決方案,我希望聽到它。
如果他們是複雜的,你也應該試圖打破他們,至少在每一個&&。 –
當然,我完全同意你的看法,那會更好,你必須同意我的觀點,即打破appart布爾語句也可以看作是一個錯誤源。它有時並不那麼微不足道。在某些情況下,id而不是觸摸它們,但仍然使用Contracts。 –