[TypeScript]使用get和set

在項目開發(fā)的過程中,往往code review的過程中,總會有同事提出這樣的comments. “Please use getter and setter”, 這個問題真的很困惑我,getter,setter在代碼編程的時候到底有什么好處呢?在我還沒有深入了解之前,我淺顯的認(rèn)為,getter和setter不僅讓代碼顯得很復(fù)雜,而且還要定義額外的私變量,除了對屬性需要做特殊處理的時候,一般情況都是能不用則不用。下面就來探討下getter和setter到底有什么過人之處,到底什么時候應(yīng)該使用他。

getter(reading)和setter(writing)的中文名字是訪問器,存儲器。顧名思義,是用來獲取和設(shè)置變量的。閱讀了其他面向?qū)ο笳Z言(C#, Java)對于getter, setter優(yōu)點, 在這里概括為:

1. 對于面向?qū)ο笳Z言來說,把成員變量直接暴露在外不符合OOP的封裝性原則,不安全, 應(yīng)使用getter和setter來取值和賦值。

2. 這兩個方法可以方便增加額外的功能(比如條件過濾,驗證)等等。

3. 內(nèi)部存儲和外部表現(xiàn)不同。(不是很理解此觀點)

4. 可以保持外部接口不變的情況下,修改內(nèi)部存儲方式和邏輯。

5. 任意管理變量的生命周期和內(nèi)存存儲方式。(不是很理解此觀點)

6. 提供一個debug接口。

7. 能夠和模擬對象、序列化乃至WPF庫等融合。

8. 允許繼承者改變語義。

9. 可以將getter、setter用于lambda表達式。(大概即作為一個函數(shù),參與函數(shù)傳遞和運算)

10. getter和setter可以有不同的訪問級別。

但對于前端typescript而言。面向?qū)ο蟮倪壿嫳旧砭筒皇呛苤?,并且所謂的繼承封壯更是少之又少,所以個人感覺還是不應(yīng)該純粹為了讀寫屬性寫getter和setter。如果getter,setter什么都不約束,寫getter或setter就沒什么太大意義了。


參考文章:https://www.zhihu.com/question/21401198

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,653評論 30 472
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139
  • 我們和三位Linkin Park的粉絲聊了聊,聽他們講自己…… 洛杉磯時間7月20日早上9點,Linkin Par...
    大觀家庭閱讀 541評論 0 0
  • 有沒有不發(fā)廣告,也能讓群友主動加你的方法?而且被踢的概率大大降低的方法? 是有方法的,那就是文案。文案是客戶接觸我...
    下面止號閱讀 590評論 0 0
  • 【參考:Centos7yum安裝Redis詳細教程 】版本: redis-4.0.1.tar.gz環(huán)境:Cento...
    夏天夏星閱讀 893評論 0 2

友情鏈接更多精彩內(nèi)容