2012-12-01 93 views
0

可能重複:
Why use getters and setters?accessor和mutator方法

在我看來,像一個大麻煩寫訪問和​​mutator方法,尤其是非常簡單的屬性的時候。我爲什麼要打擾他們?

+3

誰說你應該打擾?你不應該。 –

+0

當您確實需要確定某些事情發生時(例如增加計數器或驗證新值),它們會更有用。 – chris

+3

如果你的結構或類必須基於屬性保持不變量,那麼訪問器和增變器方法可以確保這些不變量得到維護。 – juanchopanza

回答

3

答案主要取決於你在編寫代碼多少你相信你自己,如果單獨工作的:當你共事的人或當你想執行一個編譯時

  • 保持私有變量是非常有用的檢查以確保您沒有使用它們的類外,如果您有副作用,如果您有副作用,或當你想保持變量只讀
  • 具有或不具有
  • 干將是有用的
  • setter方法是有用的獲得者和如果其他人打算使用你的課程,那麼封裝也許是件好事,因爲信息隱藏原理
  • 如果你是唯一一個在你的項目上工作的人,就做你想做的事,你會如果你真的覺得需要
  • 因爲我們正在討論C++,請不要忘記friend指令,該指令允許在沒有setter和getter的麻煩的情況下進行細粒度封裝(即使它鼓勵耦合,所以這裏有兩種不同的思維流派)
1
  1. 它們使人能夠控制訪問。你可以只讀,讀/寫,甚至只寫
  2. 它使人們可以根據需要更改底層實現。考慮計算一些車輛的平均速度。您可以通過存儲速度列表來實現此目的,然後在需要時計算平均值保持運行總數和數量。
  3. 所有對類的訪問均通過方法進行。使發現錯誤更容易。
  4. 這不是很多的努力。可以使用腳本來創建它們。
2

我不能給C++語法的負擔,但在一般的面向對象的術語,你應該提供getter和setter方法,因爲其他類沒有業務瞭解您存儲的內部狀態,包括其性能直接存儲,說這是基於其他狀態計算出來的,並且進一步轉移到其他對象。與更廣泛的世界就如何存儲狀態發佈合同聲明將限制您未來可能進行的調整,通常會在您解決的問題變得更加微妙時經常抑制優化並破壞代碼。