`
runthu
  • 浏览: 42538 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

面向对象的概念是否被神化了?

阅读更多
cuckoo framework 中的ajaxdatagrid

<cf:ajaxdatagrid sqlKey="getUserList" header="姓名,年龄,性别,成绩" />

sqlKey指sql语句的代号,保存在xml文件中的。header是列头。

这个tag很简单的数据库中的值给查询出来了。

SQL能不能搞定业务?能!

oracle提供很多功能,如存储过程,函数等等。

我们可以利用存储过程和函数的作用,高效简单的实现业务逻辑。

如果使用目前各式各样的持久层框架,就没有这么轻松了,劈里啪啦花几个小时写一堆所谓的面向对象的代码,最终的目的还是一个,把结果查询出来,说不定查询的速度还慢的要命。

有时候感觉面向对象的概念被神化了,大师们在追捧,大拿们在鼓吹,老板们在赶时髦;其中的涉及的利益链很深,最倒霉的是程序员在疲于奔命的学习、加班。

面向对象是一种想法,不知道程序员们有多少真正了解;老板问你会不会Hibernate,会就给高点工资,于是程序员在想Hibernate是必须要学的;大家应该都明白用简单的方法做好事情的道理,可到了代码开发,偏偏追求时髦,把简单的问题复杂化。

围绕关系数据库进行各式各样的业务应用,我们是否有更简单的方法?

分享到:
评论
44 楼 H_eaven 2008-08-04  
书上说的--
良好的OO开发出的软件有良好的:
1:可重用性,
2:可扩展性,
3:可维护性.

想问大家一句:面向对象的定义是什么?
           也就是:什么是面向对象.
43 楼 wanwok 2008-07-30  
    面向对象不是万能的,也没有万能的方法、思想、方案。只是在目前看来,面向对象是一种比较优秀的思想,为什么他会被“神化”而面向过程又会被淘汰,必然是有他的内在原因。
42 楼 lsy 2008-07-21  
从历史上看,世界万物都是在不断的进步的,编程语言发展到今天,OO占据主打地位,也是有其自身因素和必然规律的。如果摒弃OO,重新回到面向过程开发,那么肯定是违背历史发展,也不会得到大家认同的。OO之所以有今天的地位,我认为他是一门最能把客观世界的物体映射到计算机世界的编程思想,或者说是目前最为接近达到这一目标的实现。
41 楼 idaman 2008-07-20  
runthu 写道
个人的经验,业务上的复用,关键是设计,这里的设计不是说完全靠sql来闯天下,(也许是上面的“一个SQL引发的血案”),也不是java的面向对象的特性所能完全解决的,没有听谁说linux的C源代码就一定没有复用的特性。

其实还是前不久看到的一个争论,以数据模式为核心,还是以对象模式为核心,个人感觉在实际的开发过程中,尤其是以关系数据库为核心应用开发过程中,OO的作用似乎被神化了,是不是有更简洁简单的技术。

OO如火如荼的今天,发出这样的疑问,无疑会被骂的狗血喷头,但为什么开发效率如此低下且bug丛生,尤其是对客户需求的理解经常变动的情况下,程序员更是疲于奔命。

OO思想如果用在api设计层面,体现出来的优势很明显,简洁而优雅。但国内大部分开发者还是局限于行业应用,行业知识能否迅速有效的转化为OO思想,并提炼为干净简洁的OO代码,是个值得考量的事情。


  对比下哪个更容易抽象和理解 ?  哪个更容易学习 ?  哪个更容易维护 ?  sql打天下 ... ...
40 楼 terranhao 2008-07-19  
runthu 写道
哈哈,支持异见,查询只是个简单的例子,维护存储过程和维护java没有本质的区别,关键看你如何组织你的代码。

某些语言天生注定了他不好维护.比如transaction sql或者pql sql.代码组织得好只能让它相对好维护一点.
39 楼 mars李 2008-07-18  
OO 太广泛了,没办法讨论这个,他包含了太多的含义.
能出好几本书.
38 楼 wilson2job 2008-07-17  
回顾OO出现的背景,由于软件业的一日千里,导致开发的规模越来越大。OO应运而生,要求封装,强调重用和维护,更加适用于大规模的软件开发。

OO当然有不足之外,但无疑仍然是当前软件开发的上策。

我觉得讨论OO是好是坏,背景应该是一个“大规模的软件开发项目”,而不是具体的一个SQL语句。
37 楼 starfeng 2008-07-17  
1. OO没有被神化,只是因为真正懂的人不多
2. 现有的设计都借了OO的名,却大量违背OO的真谛。希望通过现有设计去理解OO的人只有更少。
3. OO的思想不仅是程序的思想,只要人存在,他就永不过时
4. OO不是唯一的思想,但是,若说程序设计只有2种思想,那么其中之一就有OO
36 楼 pyczh 2008-07-17  
学习!!!
35 楼 lurena 2008-07-17  
这认为,这还是一个老问题, 适合的才是最好的。世界不能只有一条定律,软件法则也是一样,你的系统是什么样的,要先回答这个问题,不然,讨论都是没有意义。OO是一个思想,至少在我的身边,真正有这个高度的人不多,更何谈用好。
34 楼 runthu 2008-07-16  
chengj 写道
面向对象是好东西,这一点不必怀疑,看看那些经典的设计模式就知道了。问题是好东西也得用在合适的场合才能发挥其优势,如果使用的场合不当,不但不能发挥其优势,还会带来相反的结果。现在有些人对面向对象了解的还不够深入,但是在设计,编码中言必提面向对象,认为凡是使用面向对象都是正确的,先进的,反之则是落伍的。这种观点是错误的,对面向对象来说也是不公正的,棒杀是杀,捧杀也同样是杀。
    以数据库为中心的管理程序,我个人认为还是SQL好些,这个领域不适合面向对象的封装。为什么这么说,是因为这个领域所对应的现实世界是一个面向关系的世界,表与表的关联体现的是彼此的业务关系。 至于有人说复杂的SQL不好维护,其实业务真是复杂到简单的SQL难以描述的程度,采用面向对象描述则更加困难,维护也更困难,同时还损失了效率。


认同,凡是没有绝对。用简单的方式实现必须的功能,这才是硬道理。
33 楼 runthu 2008-07-16  
troyconder 写道
哥们用的什么框架 你写的吗 封装的还不错 其实面向对象是被神化了 那时因为我们生活在神话的时代 所以没办法咯



哈哈,可以看看:http://cuckooframework.sourceforge.net/
32 楼 chengj 2008-07-16  
面向对象是好东西,这一点不必怀疑,看看那些经典的设计模式就知道了。问题是好东西也得用在合适的场合才能发挥其优势,如果使用的场合不当,不但不能发挥其优势,还会带来相反的结果。现在有些人对面向对象了解的还不够深入,但是在设计,编码中言必提面向对象,认为凡是使用面向对象都是正确的,先进的,反之则是落伍的。这种观点是错误的,对面向对象来说也是不公正的,棒杀是杀,捧杀也同样是杀。
    以数据库为中心的管理程序,我个人认为还是SQL好些,这个领域不适合面向对象的封装。为什么这么说,是因为这个领域所对应的现实世界是一个面向关系的世界,表与表的关联体现的是彼此的业务关系。 至于有人说复杂的SQL不好维护,其实业务真是复杂到简单的SQL难以描述的程度,采用面向对象描述则更加困难,维护也更困难,同时还损失了效率。
31 楼 troyconder 2008-07-16  
哥们用的什么框架 你写的吗 封装的还不错 其实面向对象是被神化了 那时因为我们生活在神话的时代 所以没办法咯
30 楼 eivenchan 2008-07-16  
我所在的公司是一个零售企业...
其中结算的业务非常复杂..
而结算系统是几年前用PB开发的.
大量的逻辑都用存储过程完成...
其中不乏2000行的存储过程...
一看就头痛...
就算你能很好的调整你的代码结构也没用...
除非你把这个存储过程拆分成很多个小过程...要不这么长的代码始终是一个问题..
但是当你拆分成小过程时,问题又来了...
存储过程之间调用关系很难管理...交叉调用太多..
而且事务也是一个非常繁琐的问题......
29 楼 yujianqiu 2008-07-16  
我觉得楼主举的例子说明的不是“面向对象被神话”,而是一个不适当的面向对象设计。
面向对象的特性:封装,继承,多态。设计合理的抽象层次、适当的封装是体现面向对象设计水平的重要标准。
对于工具、技术的选择,应该是选择有利于降低我们工作复杂度的工具和技术,而不是选择“简单的技术”。
28 楼 snsnx 2008-07-16  
面向对象是一种思想,一种解决问题的方法,但并不是万能的。不可否认,面向对象是可能会降低一些效率,但是为维护带来了很多好处。而且随着硬件性能的提高,大多数应用看重的是维护性,而将效率降到其次。当然,像很多实时的系统,就没有采用面向对象的语言,目前用C的人还是很多的!
27 楼 bonny 2008-07-16  
试图用一个锤子做出所有的家具的想法很不错。可是很类

所以我用不oo的html做界面比oo的java爽;可是事件机制还是要用到oo的javascript。。。。。。

不同领域 不同需求  合适选择变换工具而已
26 楼 bonny 2008-07-16  
的确oo有缺陷
但是作者的视线或者例子太短浅了

我开发的经验oo大多数情况是第一选择
可是面对流程
面对界面
纯oo显然不行

是以有面向流程的
面向界面的。。。。等等

举例来说你用html风格的语言来定义布局,肯定比oo强
你用oo的风格语言来定义关系逻辑,以及消息互动
肯定比sql强
25 楼 sendita 2008-07-16  
runthu 写道
个人的经验,业务上的复用,关键是设计,这里的设计不是说完全靠sql来闯天下,(也许是上面的“一个SQL引发的血案”),也不是java的面向对象的特性所能完全解决的,没有听谁说linux的C源代码就一定没有复用的特性。

其实还是前不久看到的一个争论,以数据模式为核心,还是以对象模式为核心,个人感觉在实际的开发过程中,尤其是以关系数据库为核心应用开发过程中,OO的作用似乎被神化了,是不是有更简洁简单的技术。

OO如火如荼的今天,发出这样的疑问,无疑会被骂的狗血喷头,但为什么开发效率如此低下且bug丛生,尤其是对客户需求的理解经常变动的情况下,程序员更是疲于奔命。

OO思想如果用在api设计层面,体现出来的优势很明显,简洁而优雅。但国内大部分开发者还是局限于行业应用,行业知识能否迅速有效的转化为OO思想,并提炼为干净简洁的OO代码,是个值得考量的事情。


主要还是对OO的理解还不够,大部分的应用开发和设计人员,对OO的理解都处于比较初级的阶段,作出的设计抽象层次不高,对需求的变化适应能力自然不强了。

相关推荐

Global site tag (gtag.js) - Google Analytics