在我看來,像一個大麻煩寫訪問和mutator方法,尤其是非常簡單的屬性的時候。我爲什麼要打擾他們?
0
A
回答
3
答案主要取決於你在編寫代碼多少你相信你自己,如果單獨工作的:當你共事的人或當你想執行一個編譯時
- 保持私有變量是非常有用的檢查以確保您沒有使用它們的類外,如果您有副作用,如果您有副作用,或當你想保持變量只讀
- 具有或不具有
- 干將是有用的
- setter方法是有用的獲得者和如果其他人打算使用你的課程,那麼封裝也許是件好事,因爲信息隱藏原理
- 如果你是唯一一個在你的項目上工作的人,就做你想做的事,你會如果你真的覺得需要
- 因爲我們正在討論C++,請不要忘記
friend
指令,該指令允許在沒有setter和getter的麻煩的情況下進行細粒度封裝(即使它鼓勵耦合,所以這裏有兩種不同的思維流派)
1
- 它們使人能夠控制訪問。你可以只讀,讀/寫,甚至只寫
- 它使人們可以根據需要更改底層實現。考慮計算一些車輛的平均速度。您可以通過存儲速度列表來實現此目的,然後在需要時計算平均值或保持運行總數和數量。
- 所有對類的訪問均通過方法進行。使發現錯誤更容易。
- 這不是很多的努力。可以使用腳本來創建它們。
2
我不能給C++語法的負擔,但在一般的面向對象的術語,你應該提供getter和setter方法,因爲其他類沒有業務瞭解您存儲的內部狀態,包括其性能直接存儲,說這是基於其他狀態計算出來的,並且進一步轉移到其他對象。與更廣泛的世界就如何存儲狀態發佈合同聲明將限制您未來可能進行的調整,通常會在您解決的問題變得更加微妙時經常抑制優化並破壞代碼。
相關問題
- 1. accessor和mutator方法混亂
- 2. accessor和mutator?
- 3. eclipse中的accessor和mutator方法
- 4. Java - 使用Accessor和Mutator方法
- 5. 如何編寫accessor和mutator?
- 6. Mutator和Accessor(使用繼承)
- 7. Laravel型號accessor和mutator通配符(*)
- 8. 將accessor和mutator方法從一個類移動到它的超類
- 9. C++ []索引運算符重載作爲accessor和mutator
- 10. Python的訪問和mutator方法
- 11. Mutator方法不起作用,NetBeans
- 12. Mutator方法中的布爾值
- 13. java中mutator方法的最佳實踐
- 14. 不允許某些值的Mutator方法
- 15. 爲了驗證而覆蓋mutator方法
- 16. 如何在JavaScript中編寫mutator方法?
- 17. Hypertable的Mutator與Shared Mutator(Java)
- 18. 覆蓋訪問器和mutator方法覆蓋
- 19. 在Objective C中的init和dealloc方法中調用Accessor方法不安全嗎?
- 20. Mutator elisp函數
- 21. 是JAVA中的println方法訪問器還是mutator?
- 22. 需要mutator方法我怎麼做他們
- 23. Mutator方法不存儲我剛剛創建的類的值?
- 24. Laravel Mutator和模型觀察者
- 25. Laravel通過accessor vue
- 26. jquery accessor id vs class?
- 27. 「。」或「 - >」C struct accessor
- 28. Selenium Accessor not stored variable
- 29. Laravel限定的Mutator
- 30. Laravel 5.4 - Skip Model Mutator
誰說你應該打擾?你不應該。 –
當您確實需要確定某些事情發生時(例如增加計數器或驗證新值),它們會更有用。 – chris
如果你的結構或類必須基於屬性保持不變量,那麼訪問器和增變器方法可以確保這些不變量得到維護。 – juanchopanza