2010-06-06 112 views
1

我真的很喜歡使用靜態方法(特別是對於helpers類)。但是,由於靜態方法不可能存在,最終它們是一種不好的做法,不是嗎?所以我必須在靜態方法的使用方便性和可測試性之間進行選擇。有沒有妥協?靜態或不靜態

回答

9

這取決於靜態方法的作用。

這是否真的必須是殘骸?像數據訪問,長時間運行的操作等等,還是你的意思是像.ToSlug()這樣的輔助方法?

如果是前一種情況,我會讓他們成爲實例方法來提高測試的可測試性/速度。

如果是後者,我會讓它們靜止並驗證它們的正確性。

+1

同意。順便提一下這個問題。 例如,您可能還想閱讀: http://stackoverflow.com/questions/731763/should-c-methods-that-c​​an-be-static-be-static http://stackoverflow.com/questions/1184701 /靜態-VS-非靜態方法 – SirLenz0rlot 2010-06-06 10:26:45

2

如果您可以保證靜態方法總是返回給定輸入的相同結果,並且它們存在的唯一原因是幫助方法(轉換或轉換輸入 - >沒有sideeffects的輸出),我沒有看到問題。對於額外的踢,你可以讓他們的擴展方法(從C#3.0)。