2012-02-08 48 views
4

有時,由於靜態數據,在應用程序中發現錯誤非常困難。在OOP中使用靜態數據是一種很好的方法,還是更好地避免它? 在此先感謝。靜態類/字段。你多久使用一次?

更新:

您多久使用一次靜態類以及用於什麼目的?

回答

2

一般來說static方法導致代碼是困難的,因爲

  • 測試我們無法知道是否有任何其他類已經改變了一個可能的狀態,
  • 我們不能輕易模仿或轉出一個靜態的實現。

雖然有一些有效的用例。

我會通常不要使用static方法,並讓默認原則是任何static內容的存在需要動機。

正如@Louis指出的那樣,static變量可用於提供單個實例常量。通常,這也可以應用於保存諸如記錄器之類的對象的成員變量。

+0

靜態常量也可以,只要它們是真正不變的。 – 2012-02-08 22:34:33

+0

我對無狀態靜態方法也很完美:例如'Math.sqrt'。但是OP似乎提到了「靜態數據」,我認爲這暗示着「有狀態」。 – 2012-02-08 23:17:15

1

靜態不應該被過度使用,但在某些情況下應該使用靜態方法來提供工廠方法或與實例對象沒有直接關係的幫助器方法。

靜態方法每次您想要執行一個操作或表示與該類相關的數據而不是對象實例時,值得使用靜態方法,因此不應該完全避免使用靜態方法,而是使用靜態方法只有當它真的需要的時候。

由於在多數情況下沒有一個絕對的答案,你的問題(避免或不使用靜態),這取決於上下文,但你不應該濫用的靜態...

相關問題