字体:  

驳“浅析成功的系统为何都是面像过程的 ”

feifengxlq 发表于: 2008-11-19 12:16 来源: PHPChina 开源社区门户

首先,请不要用这种标题来误导后来的学习者。

第一、OOP成功的系统太多了,尤其在是非PHP领域,简直是多不胜数!

第二、关于OOP的优点,不用我说相信你从书本、百度、或者实践中都会体会到。

至于为什么现在大多数PHP系统都是面向过程的,我给你几个理由:
1、历史原因及客户需求。PHP完整的OOP是PHP5才出现的,而目前大多数环境都是PHP4的。也就是说一个开源软件要成功,必要要考虑到的是客户!。不要跟我说PHP4的OOP,那是假的,实际上也是由数组模拟而成的。

2、现有开源系统都起源于PHP4或者更早。现有成功的系统在刚起步的时候,PHP的面向对象根本是不成熟的,而且当时的需求采用面对过程已经完全足够。在今后的发展,如果从根本上重构系统,带来的不仅仅是原有用户升级的困难,而且相应成本很高

3、性能,不可否认面向对象是有一定的性能损耗的,但这种损耗是非常微小的,尤其在大规模应用中,几乎可以忽视。现在你所谓的“成功系统”只不过是开源领域中应用比较广的,他更多的是中小应用。对于这些中小应用来说,这种性能损耗是有影响的。但对于正在成功的大规模应用,这种损耗相对开发维护的方便性几乎是不存在的。

最后,对于这个问题,我觉得根本没有讨论的必要!
学习好OOP对于PHPER来说,是最基本的,也是必要的。

最新回复

peacock at 2008-11-19 12:29:53
不管PHP的历史怎么样,一定要养成OOP的习惯和风格,从现在做起,除非你永远都是单干,没人能左右你,那你可以完全有自己的风格,走自己的路。
七月十五 at 2008-11-19 13:19:29
我在学习OOP之前一直对OOP比较的抵触,认为OOP能实现OPP(面向过程)也可以实现。程序不就是数据结构加算法么?一个echo就搞定,何苦一个hello world要写上几百行?
2008年元旦之后开始系统学习OOP,一下子接触了很多的OOP知识,有PHP有与PHP无关的。然后开始认识到设计模式,认识到UML。开始转换成MVC分层设计,开始使用框架,开始接触JQuery,甚至开始用OOP自己写应用程序开发核心。
让我对程序设计开始有很大的改观。OOP的设计思想一下子让我彻底的清理了原来认识上的不足。
这个是我在学习OOP之后不久写在问答求助区的关于OOP和OPP的认识。
见:http://bbs.phpchina.com/viewthread.php?tid=53321&page=2#pid387820

QUOTE:

Q:很多人对面向对象和面向过程争吵不休,两者之间到底哪个更好一些,关系又是什么?

A:面向对象跟面向过程并不是对立的,根本就不冲突。面向对象是一种思维方式,是面向过程思维的提升,并不是面向过程思维的否定。面向对象更符合人类的思维方式,有助于更好的解决问题。从思想的高度来说,应该尽早习惯于面向对象的思维方式。如此说来哪个更好一些就没有意义了。

注:七月十五一家之言,姑妄听之,如有谬误敬请斧正,谢谢。
某个人 at 2008-11-19 13:57:06
OOP是必须的。。这样体现设计的味道就更浓厚了。而不是单纯的 Coder或者高级电子数学家。。
wbsifan at 2008-11-19 15:58:40
“浅析成功的系统为何都是面像过程的 ” ,
这篇文章一经发表,便引起了许多热心读者关注.
该文章试图用一个称述语句做为标题,来诠释某种思想.

其实我们应当把该文标题看成是一个问句,反映出作者对于"最优PHP架构"的迷茫和与大家分享讨论的心情.
文章通过对作者的MYPIC项目进行剖析,由浅入深的分析出目前PHP初级应用的现状,
引出了"目前流行,使用面广的PHP程序都是面向过程的"这一中心思想.
并通过列举DZ以及其它一些成功系统的实例,来证明这一观点.

该文的写作手法,主要是通过事实分析,适时抛出引题,没有直接定下结论,给读者留下了很大的想象空间.
初看该文时,很容易让人感觉到作者是站在"支持面向过程"这一立场,
但细细品来,却能发现很多更为深刻的东西.此处不作过多评述,还是留给读者自己体会.

该文通过表达作者自己的疑惑,一定程度上反应出当前的社会问题.
相比该本文表达的思想,其留给世人的思考或许更有意义.

[ 本帖最后由 wbsifan 于 2008-11-19 16:03 编辑 ]
fhjr999 at 2008-11-19 16:14:03
我得一些言论,好像也是站在面向过程那边。

其实并非如此。

根据不同的应用类型,根据你的客户需求,尽可能的选择最适合的解决方案才是正确的做法,有得就有失,我们要做的就是权衡这个得与失的大小。

OOP是很好,但是不能一味追捧,不能什么就用它来,毕竟它不是万能的,也有不适用的地方。

做事情不能眼睛只看一面,应该让自己的思路更开拓一些。

汗,好像还是站在面向过程那边的。不知道这老兄会不会给我发奖金。
wbsifan at 2008-11-19 16:19:33

QUOTE:

原帖由 fhjr999 于 2008-11-19 16:14 发表
我得一些言论,好像也是站在面向过程那边。

其实并非如此。

根据不同的应用类型,根据你的客户需求,尽可能的选择最适合的解决方案才是正确的做法,有得就有失,我们要做的就是权衡这个得与失的大小。

OOP是 ...
很遗憾, 我就是那么老兄, 其实我是站在OOP一方的.
lmhllr at 2008-11-19 16:30:19
飞风  是俺心目中的老师.....可惜一直没见面.......
ljxok2001 at 2008-11-19 17:12:38
“浅析成功的系统为何都是面像过程的 ”的作者意思是说: 要面对最终用户编程, 把主要精力放在怎么提高用户体验, 开发者的精力是有限的, 当你把精力放在代码结构设计上过多的时候, 思考用户体验的时间就少了.
某个人 at 2008-11-19 17:19:47
啊啊。如果按照楼上朋友的说法。OOP正好是这样做的。
人不是万能的,不可能一开始把什么都想好。而是让程序拥有生命力。用户体验差。那就改。反正良好的OOP 代码改点小功能什么的是非常轻松地。
ljxok2001 at 2008-11-19 17:23:00
所以, 这个才应是讨论的重点, 而不是用不用面向对象,要不要面向过程的问题
某个人 at 2008-11-19 17:56:43
其实讨论这个没含义。。
为什么叫开源。。。。如果DZ的代码是用oop写的。我们自己改或者扩充功能,不知道比现在轻松多少。
十七 at 2008-11-19 18:01:36
我也支持学好oop!

php的oop目前不成熟是因为php的oop起步较慢,在php5才真正起到了作用,而未来在php6还会增加更多的oop特效,比如目前的6.x测试版中就已经有了namespace支持.

至于说dz,wp代码的问题,因为他们都从旧版本就开始写了,结构庞大,要一下子用从写oop从写的话工作量绝对不是一般的,成熟的产品作者们就算有这个能力也未必愿意冒这个风险.

相信随着php的oop功能的逐渐完善,更多php项目会使用oop来写.
某个人 at 2008-11-19 18:26:12
简单的说。除了操作系统。。还没有一款软件能从诞生一直用到现在的。。。
半个书生 at 2008-11-19 19:42:34
恩!分析的很好!
ttapeng at 2008-11-19 19:49:18
我从另外角度看
1、存在,就有道理
2、简单,也许更好
没必要争论,虽然都是善意的