2014-08-31 42 views
1

很多時候我聽到「單身人士是一種不好的做法,靜態方法是不好的做法」,我所能看到的所有原因都是「難以測試」。爲什麼靜態方法不好,除了測試

但我認爲有時它真的很好,如果一個操作可以完成而不實例化一個類。

編輯:只是因爲測試的,任何人都可以發現,「私有方法是太糟糕,他們不能進行測試」,例如

+0

您不能存根包含它的類。這意味着使用該「靜態」方法的每一段代碼都將按原樣執行。嘲笑不像實例方法那樣簡單。 – 2014-08-31 11:04:03

+0

再次測試:嘲笑,存根。找到一個與測試無關的原因:) – 2014-08-31 11:05:06

+0

你對私有方法的爭論是不相關的,因爲單元測試不應該首先測試實現細節,其中包括私有方法。是的,如果你不想測試你的代碼,那麼你可以用很多靜態方法逃脫。你真的想走那條路嗎? – 2014-08-31 11:06:29

回答

4

這是一個關於語義和expressing intent問題。

靜態方法本身並不壞,除了它很難測試。不好的部分是通過使用靜態方法來混淆其他程序員,以避免創建新的實例。

如果方法涉及本身而不是個別實例(例如像工廠方法),那麼通過所有方法使用靜態方法。但是,如果方法在語義上屬於單個實例,則使用非靜態方法。

1

靜態方法在一般不贊成出於同樣的原因,爲全局變量,除了測試問題:

  • 靜態方法不涉及到具體的類實例,這樣就不會總是線程安全的。
  • 有很多靜態方法的系統往往不能很好地擴展。
  • 由於調用某個類的靜態方法和類的實例成員之間的混合而導致的混淆可能導致維護問題。
相關問題