OO本身就是一个垃圾, 动态语言再支持它不仅毫无必要而且匪夷所思,
程序写好需要丰富的经验和设计水平, OO对此毫无用处 ... ...

解决方案 »

  1.   

    OO肯定是牺牲了一部分效率的,不过现在硬件都很高,效率低一点问题不大,所以不要考虑这么多。
    OO的最重大意义在于可以隐藏具体的实现细节,从而降低各个单元的之间的耦合性,达到降低系统开发难度,提高程序可维护性的目的。对于大型项目,这是很关键的。
      

  2.   

    是吗?如果要扩展功能你要不要把函数重写。你多加一个参数就要重新改写所有调用这个函数的模块。
    ------------------------------------------------------------------------------------
    OO重在架构设计,而不是像过程那样直接写代码。只要初期进行合理的架构设计,后期维护是很简单的。举个例子:A:你他妈的;B->继承A:靠,你他妈的!;C->继承A/B:某某,靠你他妈的!
    当你要维护的时候,改A,则B,C全部都被改动。关键看你怎么去构建,如果你自己不会构建一个合理的运用,再怎么OO也是白扯!
      

  3.   

    OO重在架构设计,而不是像过程那样直接写代码。------------------------------------------------------------------------------------所谓的OO设计, 实际很垃圾, 你动动手就知道了, 一旦出现改动可能比op更垃圾 ... ...
    另外, "而不是像过程那样直接写代码",op也不是让你就直接写代码吧???  主要是国内的
    软件环境: 大家刚开始搞开发就正好碰上国外开始大规模滥用oo,把oo吹嘘的近乎完美的
    时代, 导致很多人对op整体运用一无所知而已.实际上,更本质的概念是模块化, 但oo在模块化上非常难以实际操作(理论上说得很好听:
    oo更接近自然,更接近人的思维, 实际上是一堆垃圾), 作为一个工具不使用也罢 ... ..
      

  4.   

    是吗?如果要扩展功能你要不要把函数重写。你多加一个参数就要重新改写所有调用这个函数的模块。------------------------------------------------------------------------------------软件很多程度上不只是光要扩展的. op可能要把函数重写,oo可能更垃圾 ...
      

  5.   

    怎么没话说? 你想当初php是怎么发展起来的?就是因为使用起来简洁实用, 比如
    搞一个文件上传功能, 在java中你要做无数次的鼠标操作,键盘操作, php中就是
    调用一个函数而已,而这个函数显然不是什么oo ... ...php的最大优势就是专业,简洁, 如果php去和java,.net之类的东西去比拼什么纯
    oo,什么特大型web应用程序, 简直就是匪夷所思了 ... ...
      

  6.   

    个人觉得用一个东西就要用它最专长,最有特色的楼猪真要oo, 还是建议你用java或.net, 专业简洁实用是php的专长,不是oo.
      

  7.   

    比较有名的开发人员都是oop开发的。你愿意溶入他们,成为他们的一员。还是高举复古旗帜另起门派决定权在你。不是有句话说,中国人是无所不能的嘛。某某只要振臂一呼,中国十亿农民一起写程序,也是一股不可忽视的力量,说不定还能上头条。到时用oop写作的那帮人肯定是要被劳动人民淹没,无声地消失在历史的车轮中。
      

  8.   

    1、动态的调用静态成员是否会降低效率?
    ======================================================
    如何动态调用静态成员呢?static为静态,private为私有属性,一定区分开这两个属性.
      

  9.   

    "比较有名的开发人员都是oop开发的。"----这个超强!!! 看来oo确实厉害, 连人都能开发, 哈哈 ... ...
      

  10.   

    wowh(NETwalker): 没话说就不要说,别人不会把你当哑巴.
      

  11.   

    "中国十亿农民一起写程序,也是一股不可忽视的力量,说不定还能上头条。到时用oop
    写作的那帮人肯定是要被劳动人民淹没,无声地消失在历史的车轮中。"真是搞笑,现在即使真是中国十亿农民一起写程序, 那他们在铺天盖地的oo宣传中, 更可能
    会用oo的思路写程序,而不是sp, 建议不要自打耳光.
      

  12.   

    谈不上火拼, 我只是觉得php自有php的独特个性, 而那个个性里面最初并没有
    oo的一席之地, 后来只是赶大流加上这个特性而已, php真要与java,.net火拼这个
    玩意, 估计没什么前途
      

  13.   

    有没有前途也不是你说了算加了OO 又不是不能写过程了 你爱写过程就写过程 但你在别人问OO的帖子里瞎搅和什么LZ是来问问题的 又不是来听你批判OO的 真是可笑
      

  14.   

    redex(cc): 
        你的观点我实在不敢苟同。事物发展必然有其必要性,如果你说OO是垃圾,OP才是正宗。那么是否写 C 程序的人可以说 PHP 是垃圾,C 才是正宗?那么是否也可以说汇编才是正宗,C 是垃圾?再进一步,就可以说直接用 100100101 来写代码,汇编那种垃圾没有用处。
        在实际的项目中,我们是OP和OO结合使用,比如Java中所有东西都是对象,但是往往我们可能需要的只是一个函数,于是不得已只能写出 public static void xxx()这类的方法,在PHP中我们只需要一个function xxx()即可。
        但是有些情况下,OO却更合适,比如我现在的一个项目有这样的需求:要求使用xsl将数据导出成静态html写到web服务器中,另外还需要支持使用自定义的模版语言来导出静态的html,后期可能会根据客户需求采用别的导出方式,那么如果用OP一旦需求改变,你要增加一个新的导出函数,修改调用导出函数的函数(或许还有别的函数要改)。这样会导致以下的情况:
         1. 如果程序是你一个人写的,那么你必须对所有修改的函数进行测试。
         2. 如果你仅仅写了一部分函数,那么你就得和别的同事交流想法、进行讨论来完成功能。你和你的同事都需要进行代码修改和测试。
         3. 如果你是一个大项目,由专门的测试团队那么你需要和你的所有相关同事进行讨论。对所有修改过的代码和模块进行测试。
         这仅仅是一个很简单的假设,涉及的函数可能最多2-3个。但是实际系统可能涉及的方面更多,影响也更广,涉及到的人力物力更多,我想你们领导是不会愿意看见这种情况的(除非你是领导)。    如果使用OO,你需要定一个抽象类,然后根据需求增加一个继承的类,使用工厂方法创建具体类,根本不需要修改调用类的已经经过测试的代码。那么你的代码修改量、测试量都会有大幅度的减少。就算调用导出类的代码是有其他同事编写的也不会导致他们重新修改代码并测试。    我个人能力不高,能举的例子大概就这样。
      

  15.   

    TO:楼猪
       我在学习OO的时候也有这样的想法,但是实际情况是程序性能虽然很重要,但是程序的结构以及代码的复用性、可读性往往更重要。尤其在团队开发环境下。事实上,面向对象的确会略为降低系统的执行效率,但是这种效率的降低可以用硬件的升级来弥补。如今软件需求越来越旺盛,系统规模越来越大的,需要有良好设计方法、开发方法来降低开发成本、维护成本。这点效率不是问题。   而且,说句实在点的话,如果你OO水平很高,你在找工作面试的时候能侃的东西就越多,你面试的成功率会更高。
      

  16.   

    倒,打字没注意,写成:楼猪了。都怪我这几天在网上和同事对骂的结果,打zhu第一个就是"猪"。向楼主道歉。
      

  17.   

    一天没来
    回帖不少
    但是似乎和我的问题关系不大啊
    至于是否OOP我不想多说了,不说别的,使用ZENDSTUDIO查找方法实在是太方便了,以前不OO的时候三四十个函数经常挨着找,现在敲几个字母就可以自动出来。
    另外,不是很赞同不考虑性能,因为PHP本身就是解释执行,我手头有个国外采用PHP MVC开发的一个ERP的东西,运行巨慢,我可不想搞成他这个样子,在开发中尽量提高每一处的效率,这样累计之后就是给客户更好的体验,卖出更高的价钱。
      

  18.   

    "我手头有个国外采用PHP MVC开发的一个ERP的东西,运行巨慢 ... ...我可不想
    搞成他这个样子..."----楼猪说得不错, 主要还是实用. 但用java那一套垃圾(分层再分层,抽象再抽象)
    即使在国外也广受质疑与嘲笑(比如经典的对JSF的嘲笑), 主要还是玩oo,玩抽象玩
    过头了, 古人说: 过犹不及, 即使用oo,也不要像java搞的那么垃圾,简洁实用就好
    ... ...