【譯】再見,面向對象編程(二)

Charles Scalfani程序員

原文:https://medium.com/@cscalfani...
元旦過了,如下是第二部分的翻譯。
圖片描述
Museum by Mark Chang https://www.artstation.com/ar...web

封裝,第二個坍塌的支柱

乍一看,封裝應該是OO編程中的第二大收益。
對象的變量狀態不能從外部訪問,他們被封裝在對象中。
封裝對你的變量來講很安全。
封裝太厲害了!
直到。。。編程

引用的問題

基於效率上的考量,對象不是基於他們的值而是基於他們的引用傳遞給方法。
這個意思是對象沒有傳給方法,實際傳的是引用或對象的指針。
若是一個對象是按照引用傳給對象的構造函數,構造函數能夠把對象引用放在被封裝所保護的私有變量中。
可是傳遞的對象並不安全!
爲何?由於代碼的其餘地方有指向對象的指針,那段代碼能夠調用構造函數。他必需要有對對象的引用否則他不能夠將其傳給構造函數。安全

引用的解法

構造函數須要將傳遞過來的對象克隆。並且不是淺克隆而是一個深克隆,每個傳遞給對象的參數裏包含的對象與每個在這個對象中包含的對象,一個接一個。
都是爲了效率。
不是全部的對象均可以被克隆。一些是與操做系統資源所關聯的對象,對其進行克隆最好的結局是沒什麼用,而最壞的結局是作不了。
而每個主流OO語言都有這個問題。
再見,封裝。微信

多態,第三個坍塌的支柱

Polymorphism was the redheaded stepchild of the Object Oriented Trinity.
It’s sort of the Larry Fine of the group.
Everywhere they went he was there, but he was just a supporting character.
(翻譯註,以上三句水平有限,應該有美語語境的典故,很差翻譯,故放原文)
並非說多態很差,只是你不須要在面嚮對象語言裏作這個。
接口能夠給你這個能力。而不須要OO的特性。
而使用接口,無論你加入多少行爲都沒有任何限制。
因此不用太麻煩,咱們對基於OO的多態說再見,擁抱基於接口的多態。函數式編程

被打破的承諾

固然,OO在早期承諾了不少。而這些承諾對於在教室中的,讀博客和學習線上課程的天真程序員有效。
我花了許多年才認識到OO騙了我。
我被賣了。
再見,面向對象編程。函數

怎麼辦?

你好,函數式編程。能在這幾年能遇到你真不錯。
只有再一,沒有再二。
若是你想加入一個web開發者互相學習和幫助的使用Elm函數式編程的社區,你能夠訪問個人Facebook組, Learn Elm Programming。
https://www.facebook.com/grou...學習


微信公衆號「麥芽麪包」,id「darkjune_think」
開發者/科幻愛好者/硬核主機玩家/業餘翻譯家/書蟲
交流Email: zhukunrong@yeah.netspa

相關文章
相關標籤/搜索