私有屬性的Get Set 與 Public

Mr-Wanter發表於2018-07-30

最近經常思考一個問題,類的屬性直接宣告為public 不就可以直接賦值和呼叫了麼?為什麼還要用get和set呢?

1、別和我談orm框架

2、大多數業務情況下都是get set並存,不存在只get  或只set

3、別和我談規範,我都不用get set也是一種規範

4、思考這個問題的原因不是在於懶得寫get set  而是要深究這種編寫思想

我的看法:

首先任何的封裝目的都是為了程式的安全性、可維護性、規範性等等

安全性:屬性宣告為private 利用get set封裝,當只提供get或set的業務場景出現是才體現出安全性,避免出現不該修改的屬性修改了,不可以訪問的屬性值get到了

規範性:所有的類都應該私有化屬性變數,通過方法獲取和賦值

可維護性:當某個業務有一天突然需要只讀取男性的資訊的時候,可以再get方法內新增條件判斷,而不需要在眾多的類物件.屬性得到後進行判斷,修改位置唯一也便於恢復業務場景

結論:之所以將類的屬性進行封裝主要還是在於可維護性,如果專案不考慮這種業務場景,public的屬性也無關係,但是你能確定業務真的不會變麼?

以上的理解我也不知道正確與否,其實在寫的同時也有一點懵,權當做提供一個理解思路吧。希望路過的大神可以解釋的清楚明白

相關文章