2014-03-19 141 views
-2

我聽到了很多不同的意見,並且還沒有真正能夠找到這個問題的可靠答案。何時/爲什麼靜態變量不好?爲什麼靜態變量不好?

如果我想在列表中存儲玩家的名字,比較好的方法是使它不是靜態的嗎?如果是這樣,爲什麼?

每次玩家離開/加入時,列表都會更新。它將用於向玩家展示其他玩家以及跟蹤他們的玩耍時間。

+3

恐怕這個問題過於寬泛,基於SO格式的意見。你可以嘗試縮小到一個特定的情況,顯示你當前的代碼? – Szymon

+0

他們不是'壞',但他們通常是錯誤的。很多bug通過刪除「靜態」來修復,而通過刪除「靜態」來修復很多bug。大多數時候你想要實例狀態。 – EJP

+0

它是靜態頁面上的一個小列表嗎?你是否在各種頁面之間進行混洗並在多個地方加載相同的列表?你多久編輯一次?給我們這個場景!一切都不壞每次 –

回答

4

靜態變量不一定是不好,但軟件設計的一個主要原則是你應該包含需要知道它的最小上下文的信息。如果在一個類的所有實例中共享一個變量真的有意義 - 記錄器對象是一個常見的例子 - 那麼使它變爲靜態就好了。如果有一個以上的版本或副本,就像遊戲玩家的情況一樣(認爲多個遊戲同時運行),那麼最好將列表放在儘可能最小的位置(非靜態)上下文。

-1

靜態變量使得將數據看作函數的輸入/輸出更加困難,因爲任何函數都可以訪問靜態函數。當您獲得數千或數萬行代碼時,它就成了一個問題。不是在你的第一個小應用程序。

「泄漏內存」也更容易,因爲靜態的生命與程序是一樣的,這意味着它永遠不會被垃圾收集,直到程序關閉,或者它被代碼清空。

+0

即使引用是靜態的,即使該對象不再需要,也不會造成內存泄漏。 –

+0

有引用泄漏,它仍然是各種泄漏。它是應用程序內存不足的常見原因,它們提供了他們不需要的內容。 – NameSpace

+0

現在你已經添加了引號,這是一個更加可接受的陳述。 –

相關問題