私有屬性的Get Set 與 Public
最近經常思考一個問題,類的屬性直接宣告為public 不就可以直接賦值和呼叫了麼?為什麼還要用get和set呢?
1、別和我談orm框架
2、大多數業務情況下都是get set並存,不存在只get 或只set
3、別和我談規範,我都不用get set也是一種規範
4、思考這個問題的原因不是在於懶得寫get set 而是要深究這種編寫思想
我的看法:
首先任何的封裝目的都是為了程式的安全性、可維護性、規範性等等
安全性:屬性宣告為private 利用get set封裝,當只提供get或set的業務場景出現是才體現出安全性,避免出現不該修改的屬性修改了,不可以訪問的屬性值get到了
規範性:所有的類都應該私有化屬性變數,通過方法獲取和賦值
可維護性:當某個業務有一天突然需要只讀取男性的資訊的時候,可以再get方法內新增條件判斷,而不需要在眾多的類物件.屬性得到後進行判斷,修改位置唯一也便於恢復業務場景
結論:之所以將類的屬性進行封裝主要還是在於可維護性,如果專案不考慮這種業務場景,public的屬性也無關係,但是你能確定業務真的不會變麼?
以上的理解我也不知道正確與否,其實在寫的同時也有一點懵,權當做提供一個理解思路吧。希望路過的大神可以解釋的清楚明白
相關文章
- 原型鏈上的get與set訪問器屬性原型
- JavaScript get set 訪問器屬性JavaScript
- c# public_protected_private許可權訪問符_屬性訪問器get_setC#
- Python中的私有屬性與私有方法Python
- javascript 物件屬性的get set訪問器寫法JavaScript物件
- lombok get/set 與 JavaBean get/setLombokJavaBean
- 私有屬性
- Vue之computed(計算屬性)詳解get()、set()Vue
- C#中類的屬性訪問器--get和set分析C#
- Set size 屬性
- JavaScript私有屬性和靜態屬性JavaScript
- 修改物件私有屬性物件
- 淺談對屬性描述符__get__、__set__、__delete__的理解delete
- 協議中的私有屬性協議
- 手把手帶你用原生js實現css屬性的set和getJSCSS
- 私有setter公有getter屬性
- 常用的瀏覽器私有屬性瀏覽器
- 同時重寫屬性的get和set方法系統報錯問題處理
- JavaScript公有屬性、私有屬性、公有方法和原型方法JavaScript原型
- Python - 物件導向程式設計 - 公共屬性、保護屬性、私有屬性Python物件程式設計
- Python中訪問私有屬性和私有方法Python
- SQL Server 生成C#公共實體屬性和私有屬性SQLServerC#
- python呼叫私有屬性的方法總結Python
- js 物件方法、類方法、原型方法的區別;私有屬性、公有屬性、公有靜態屬性的區別JS物件原型
- 為什麼 JavaScript 的私有屬性使用 # 符號JavaScript符號
- 使用 babel 外掛來打造真正的“私有”屬性Babel
- Scala類的屬性以及物件私有欄位物件
- js 私有方法屬性和公有方法屬性簡單介紹JS
- C# Get SetC#
- 淺說 get set
- PHP memcached,(set,get)PHP
- Python 類的屬性與例項屬性Python
- set autotrace的選項和計劃報告的屬性
- 難道是瘋了,要讀寫物件的私有屬性!物件
- 深刻理解php“繼承“、“私有屬性“、“$this指向“的關係PHP繼承
- python:get和setPython
- 快速生成get、set方法
- JavaScript物件的資料屬性與訪問器屬性JavaScript物件