【译】再见,面向对象编程(二)

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

相关文章
相关标签/搜索