最近,在dzone上面的“Why OO Sucks”引发广大开发者们激烈的讨论。这篇文章的作者Joe Armstrong列举了4条原因来说明面向对象编程是很糟糕的,运用面向对象编程并没有大家想的那么自然顺畅,很多程序员已经厌倦了教条主义的使用面向对象编程。下面让我们来看看Armstrong的4个观点吧! 观点1—数据结构和函数应该分离 Armstrong认为数据结构和函数这两者是非常不同的。数据结构仅仅包含数据,并不会执行任何操作。而函数却是个执行者。显然这样说是正确的,但是Armstrong认为这就是它们应该分离的原因。然而他对这样的结论却没有进行详细的解释。 从组织代码来看,把数据结构和函数放在一起操作并不会很糟糕,比如类和模块就是采取这样的方式。在C语言程序里,把数据结构声明和函数放在一个头文件里面来操作这些数据结构并不少见,它并没有强调面向对象,但基本概念是一样的。 观点2—万物皆为对象 Armstrong说:
这样的观点毫无意义,在许多面向对象编程语言中,一个类是一个数据类型,所以一个对象是一种数据类型的一个实例。 另外,Armstrong还有一个观点,但这只是一个值得异议的标题罢了,他的观点并不是很好,在一个纯面向对象的语言中,你不得不把所有函数放进对象里面。这就是为什么Java或多或少比Ruby令人烦劳。 观点3—OOPL数据类型定义遍布各地。 如果没有理解错,Armstrong喜欢把数据结构定义放在有限的源文件里。在面向对象编程中,是不建议这样做的,把函数操作和数据结构都放在同一个文件中,这将使文件变的相当大,这是不切实际的。 但这仅仅是个人编程喜好罢了。Armstrong并没有提供任何论证来说明不同的组织会产生什么样的编程范式? 他在文中写到:
就如我在观点2上面发表的一样,这毫无意义。不需要去创建一些基本的对象来存放数据结构,一个对象即是一个数据结构。如果你想创建“时间”对象,仅仅创建一个“时间”类就好了,根本不需要继承。 观点4—对象私有态 Armstrong觉得,状态是糟糕的,大家应该避免使用它。传统的面向对象会隐藏内部对象的状态,对象状态其实还是包含在里面的,要想真正避免是很困难的。 这个观点是不错,但是不应该作为反对面向对象的一个理由。程序在面向对象方法里只使用不可变对象并且避免使用状态是有可能的。 面向对象的基本思想是把数据和函数捆绑在一起,但是Armstrong似乎很反对(观点1),但是他并没有进行论证? 对于反对教条式的面对对象,还是存在一些很好的理由,但Armstrong并没有真正阐述出来,对于面向对象编程,大家的观点又是怎样的呢? 英文来自:No, that's not why OO sucks 本文为ImapBox编译整理,未经许可不得转载。如需转载请联系market@csdn.net。
比如“时间”,在一个面向对象语言中,“时间”就是一个对象,但是在一个非面向对象的语言中,“时间”仅仅是一个数据类型的实例。
在一个OOPL中,必须选择一些基本对象存放我将定义的那些普遍存在的数据结构,其他对象如果想使用这些数据结构,就必须继承这个对象。假设,我要创建一个“时间”对象,该对象放在哪里,并且该属于哪个对象……
本网页所有文字内容由 imapbox邮箱云存储,邮箱网盘, iurlBox网页地址收藏管理器 下载并得到。
ImapBox 邮箱网盘 工具地址: https://www.imapbox.com/download/ImapBox.5.5.1_Build20141205_CHS_Bit32.exe
PC6下载站地址:PC6下载站分流下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox 网页视频 工具地址: https://www.imapbox.com/download/ImovieBox4.7.0_Build20141115_CHS.exe
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)