很多時候我聽到「單身人士是一種不好的做法,靜態方法是不好的做法」,我所能看到的所有原因都是「難以測試」。爲什麼靜態方法不好,除了測試
但我認爲有時它真的很好,如果一個操作可以完成而不實例化一個類。
編輯:只是因爲測試的,任何人都可以發現,「私有方法是太糟糕,他們不能進行測試」,例如
很多時候我聽到「單身人士是一種不好的做法,靜態方法是不好的做法」,我所能看到的所有原因都是「難以測試」。爲什麼靜態方法不好,除了測試
但我認爲有時它真的很好,如果一個操作可以完成而不實例化一個類。
編輯:只是因爲測試的,任何人都可以發現,「私有方法是太糟糕,他們不能進行測試」,例如
這是一個關於語義和expressing intent問題。
靜態方法本身並不壞,除了它很難測試。不好的部分是通過使用靜態方法來混淆其他程序員,以避免創建新的實例。
如果方法涉及類本身而不是個別實例(例如像工廠方法),那麼通過所有方法使用靜態方法。但是,如果方法在語義上屬於單個實例,則使用非靜態方法。
靜態方法在一般不贊成出於同樣的原因,爲全局變量,除了測試問題:
您不能存根包含它的類。這意味着使用該「靜態」方法的每一段代碼都將按原樣執行。嘲笑不像實例方法那樣簡單。 – 2014-08-31 11:04:03
再次測試:嘲笑,存根。找到一個與測試無關的原因:) – 2014-08-31 11:05:06
你對私有方法的爭論是不相關的,因爲單元測試不應該首先測試實現細節,其中包括私有方法。是的,如果你不想測試你的代碼,那麼你可以用很多靜態方法逃脫。你真的想走那條路嗎? – 2014-08-31 11:06:29