论坛首页 入门技术论坛

面向对象并不是目的

浏览 9171 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (17) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-26  

我经常会读到或听到有人说一些“这个和那个不是正确的面向对象”,或“… 面向函数”,或诸如此类的言论。我以前也会发表这样的言论——当我刚从大学出来的时候。这种的观点在昨天这里发表的一篇名为”what we don’t need in object oriented programming“里也体现了出来。

后来,在现实世界中,我知道了这真正的事实:

我们开发软件并不是为了让它面向对象化,或遵循其它的模式。

我们开发软件是为了解决问题。

每一种编程模式(OO, FOP, AOP 等)都擅长于解决某一特定类型的问题,但没有一个——我个人认为——是全能的。所以,我觉得很幸运能有那么多的工具和语言概念来供我们选择,而不是限定于一种。用什么样的工具和什么样的思想,这依赖于我们要解决的问题的类型。

例如,现在已经是2010年了,为什么Java里仍然没有无符号基本数据类型?如果我必须对字节进行操作,那就麻烦了。为什么我们对使用什么样的基本类型的没有选择余地呢?

相同的思路,为什么Scala里只有对象类型?如果我要开发的某种软件是用来操作二进制数据的,我可不希望Scala在屏幕后面为我做什么优化。我 希望自己能掌控它。如果我需要在大量的二进制数据上进行字节操作,这就有问题了,Scala的基本类型是常量化的吗?于是,每一次操作我都要创建一个类型 实例?汗颜。

通常,当有些很精明的程序员对我的做法说三道四,却又根本不知道我是在解决什么问题时,我很苦恼。这就像是在说“我比你更知道你需要什么,所以我们 不能用这个、那个工具/风格/架构”。但事实却是,这些精明的思想家并不是更知道对于每个开发人员,什么样的工具或思路才是他们解决相应的问题所需要的。 做个类比,这个极其类似那些精明的政治家宣传自己最知道人们究竟应该怎么活着…

总结一下:我们开发软件是来解决问题的,只要能把问题正确的解决,它就是“正确”的方式。目前,看起来真正能够做到这一点的编程语言阵营只有C#团 队。我是个有11年Java编程史的Java迷,这样说我也很受伤。但他们对于我来说就是这样,这些C#的语言设计者真正的懂得这样的事实:我们没必要一 定强迫自己使用某种模式,我们要自己给出选择。

 

 

 

翻译来源:外刊IT评论

 

 

:-)

   发表时间:2010-10-26  
我们开发软件并不是为了让它面向对象化,或遵循其它的模式。

我们开发软件是为了解决问题。

---楼主所说这个我很赞同

但是现在软件开发也讲究方法,而不是单纯的解决问题。

面向对象在一定程度上能够将问题简化,能够更好的解决问题,何乐而不为呢?

当然也不是说碰到所有问题马上就想到面向对象化,要根据实际的软件项目来决定。

呵呵~
1 请登录后投票
   发表时间:2010-10-26  
认为面向对象是目的的,那是知其然不知其所以然!!

楼主的使用主义有的可怕啊,不能说错,但很容易误导人哦!!

不要觉得能把功能实现就ok了,这样太危险。。。

需要考虑系统设计的耦合度,扩展性,程序的易维护性,易读性等等。
1 请登录后投票
   发表时间:2010-10-26  
现在在再谈面向对象也没啥意思了~ 那些大公司就是看不贯微软独霸天下~
整的现在写个东西,就得装个处女机~ 谷歌乐了,甲骨文乐了~
0 请登录后投票
   发表时间:2010-10-26  
确实,人总是很容易走极端, 有了OO,就什么都要OO, OO里面不还是要面向过程, 过程式的永远不可或缺
0 请登录后投票
   发表时间:2010-10-26  
到处都是OO?我觉得到处都没有OO,那么多用spring的,怎么OO
0 请登录后投票
   发表时间:2010-10-26  
OO不是目的,赚钱养家糊口才是目的
0 请登录后投票
   发表时间:2010-10-26  
linliangyi2007 写道
认为面向对象是目的的,那是知其然不知其所以然!!

楼主的使用主义有的可怕啊,不能说错,但很容易误导人哦!!

不要觉得能把功能实现就ok了,这样太危险。。。

需要考虑系统设计的耦合度,扩展性,程序的易维护性,易读性等等。


支持  精辟
0 请登录后投票
   发表时间:2010-10-26  
是的,用面向对象解决一些问题,当然也有面向对象解决不了的问题
0 请登录后投票
   发表时间:2010-10-26  
找对象不是目的,目的是娶妻生子
11 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics