to beepbug :

1点明白你的意思.

2点,关于if else ,我开始不信banq的话,不过实践中发现,,事实就是很多if else 在OO是不需要用到的.比如我的项目中,解决某个业务问题,我已经建立好模型,不过开发人员还是自己用习惯的方法写代码,一个方法搞定.后来我review代码发现, 和开发人员一起重构,在重构过程中发现,面向过程的很多if else 在OOP是不需要,这些if else所要表达的业务逻辑通过对象之间的关系可以很自然的表达,使用OOP修改之后的代码和之前比差别很多,最主要就是容易理解.我相信完全用OO替换if else是不可能的,但是有很多if else应该使用OO替换.重构完成开发人员很兴奋,当然我也很兴奋. 这个是实践经验,非理论..

3点.做设计人员也必须编写代码的,当然不能偏离实际的编程..实际工作中,很多代码都是我review后,和开发人员一起重构.过程挺辛苦,,,......主要要花精力去改变他们,,事实上很多人不喜欢改变.
[该贴被BinnyJ于2009-05-08 17:12修改过]

2)你把因果次序搞错了。不是说看见有许多if-else,就想到去OO的。你把问题正确地OO了以后,里面该有if-else的,就让它有,这是正常的。在SUN的文档里,我至今没看见过有用OO去取消if-else的说法。
3)问题还是在自己。你如果拿你的2)来说服我,让我放弃SP,改用OOP,我不会信服的。

请问,你以为OO最重要的意义是什么?

我的意思是说, 正确的OO后,很多if else是不需要的.可没说if else一定要OO掉噢...

从目前的流行的说话,OO意义提高软件质量,可维护性强,可扩展性强等等很多..

从我实践的经验看.OO让我们更容易理解系统.就这么简单.

3)不明白你的意思.以我目前项目的实践经验来看,做OOD的设计人员设计时不能脱离编程.设计完后也需要,我觉得至少要review代码. 有能力指导开发人员.

我意思是,譬如我是一个SP者(按结构化思想编程者),如果拿像这里几位高手那样的关于OO好处的说法,来劝导我脱离SP苦海,改投OOP极乐世界,我是不会动心的。我觉得,这OOP,为了这么些东西,闹的反而麻烦,还不如SP来得简单。
OO的本质是问题的描述。计算机要解决现实问题,就要模拟现实世界。但是,在OO之前,模拟的只是结果,而不是现实的本身。但是,现在,计算机里的Object和现实生活中的Object还有非常大的差异。OO还刚刚起步,Banq们把它捧得太高。

其实为什么会有OO,有敏捷开发,都是因为原来的开发方法存在问题,才会出现这些新的想法。从我毕业到现在做过多个J2EE项目,算挺大的都是上百万的项目,从设计、编程到最终交付软件,以及后期维护、功能扩展都存在很多相似的问题,特别是到了后期的维护和功能扩展,经常会让维护人员陷入极大得困境,公司也会陷入成本问题。当然对于一些非常牛X的高手,很多问题都能解决得很好,但是有哪家小公司能养一堆牛X高手呢?我觉得这些问题很大一部分是软件难理解,软件弹性不够导致得。因此必然要寻找解决这些问题得手段,这样才能有发展、有进步。不管个人还是公司,都应该积极需求提高生产力、解决问题得方法。

导致这些问题原因很多,我相信并不是OO就能全部解决。但OO出现就是为了解决部分出现的问题。从理论上OO有非常多好处,我个人觉得真理需要实践检验,试了才知道。 “是骡子还是马,拉出来遛遛就知道”。从实践中来看,我看到希望,从OOD到OOP多和以前的方法很不同,在实际开发中我觉得在传统的软件工程中使用OO好像有点别扭,也许敏捷开发出现和OO有点关系吧(这点我保留意见,毕竟我没实践过敏捷,目前的环境也不可能让我去尝试)。目前实践得出来得经验,从对象理解系统,肯定比从数据结构理解系统更加容易,更加“自然”。

我给公司项目负责人交流我的心得,大部分都觉得不错,但是大家觉得变化带来成本很高,很多人都从事多年的项目开发,也习惯了这种方式,也习惯了项目出现的问题。大家一直认为在中国现在搞OO是不是太早,因为同联盟的其他几家公司都没关于OO的思想。

我觉得jdon的banq很多观点很不错,banq提到很多问题有很多我在实际工作碰到的,把OO捧高也不错,不捧高大家都看不到。 但对待OO并不是盲从,实践证明行才行。
[该贴被BinnyJ于2009-05-08 23:17修改过]

我个人总结:
想在中国本土“部分”软件公司混,可不能靠OO啊。:)


在未来我还是会继续OO,DDD。经过这个项目后我非常有信心, 但是千万别想靠OO在中国本土“部分”软件公司混下去。还是要靠SP啊。。。。 ^_^
[该贴被BinnyJ于2009-05-11 09:18修改过]

相对来说OO并不是面向一个小的开发过程,在一个足够简单的应用环境里面OO可能反过来成为最大的瓶颈。但是对于一个大规模的并且需要长期维护的项目来说OO是唯一的出路。

就好像一个3人的小公司请个MBA来做经理更容易让人看到成本而见不到收益。反过来讲,你公司的老板也没有想把公司继续做大。

1)>>>其实为什么会有OO,有敏捷开发,都是因为原来的开发方法存在问题
不是。你这么说,到是贬低了OO。开发方法是后面的事,前面的,首先是对现实世界的模拟。Banq他们津津乐道的设计模式,才是为了解决开发中存在的问题。
OO更基本。SP上有与SP相适应的设计模式,OO上有与OO相适应的设计模式。
2)>>>在未来我还是会继续OO,DDD。经过这个项目后我非常有信心, 但是千万别想靠OO在中国本土软件公司混下去。还是要靠SP啊。。。。 ^_^
这个可能是你把自己看得太OO了,把你自己以外的中国人看得太不OO了。
3)真正的OO应该是降低开发成本的,走火入魔的OO当然会拉高开发成本。

>>>相对来说OO并不是面向一个小的开发过程,在一个足够简单的应用环境里面OO可能反过来成为最大的瓶颈。但是对于一个大规模的并且需要长期维护的项目来说OO是唯一的出路。

也许现实就是这样的.

我真的很想知道中国有多少家软件企业在OO, 至少在我所认识的公司里都不OO,大多数反对OO.在论坛上经常看很多在谈论OO,那到底多少应用到实际项目中.多少是OO的公司呢?

to beepbug
感觉你说的话很象OO大师级, 是不是从事OO呢?从你眼睛里看,中国软件企业中OO如何?

我这人说话不会很哲学,我觉得现实怎么样就是怎么样....

>>>这个可能是你把自己看得太OO了,把你自己以外的中国人看得太不OO了。
我把"中国本土软件公司"改为"中国本土部分软件公司"吧.费事引起不必要的麻烦..... 因为我根本没这个意思,确被你翻译出这个意思.


还是哪个问题,中国到底有那些公司有OO思想的,那个高手能介绍一下.至少做为以后发展方向. 如果留在现在圈子,那就不能用OO了.

如果真的理解了OO,反过来在SP方面应该没有什么障碍吧。LZ何必界定的那么清楚。

1)我不是OO大师,绝对不是。
2)我现在基本不编码。
3)从机器语言、汇编语言、高级语言、结构化、OO、J2EE,每一次进步,都有一个共性:扩大对代码规模的控制能力。机器语言只能写很少的代码,与SP相比,OO可以书写很大规模的代码量。
4)譬如深圳那边的金蝶软件(中间件),他们开发应用服务器。这个总得用OO来开发吧?如果用SP来开发,那做这么个大家伙太不现实了,如何去和WebSphere、WebLogic等竞争?
5)估计楼主还年轻吧?容易看黑暗面,容易消极,我只是提醒。语言恶了点,但没恶意。

>>>使用OO进行设计,通过对象来建立系统的模型更符合人的逻辑思维,对象思想非常贴近现实,通过对象来理解系统更有意义;而使用面向数据库设计,必须通过数据库表来表达系统,数据库表虽然也能表达业务模型,不能生动的表达现实的业务意义,主要表达业务数据意义,通过数据库表理解系统比较困难。

数据库不是用来表达系统的。
如果你开发的是以数据为中心的系统(除了部分工程计算类,基本都是),系统设计的第一步,就是做数据的文章(数据设计)。把数据安排好了,才是模块设计,此时才需考虑OO。正如你的公司是以客户为中心一样,你在开发时得以数据为中心。
这是老思想,很老的思想,年轻人可能不爱听。但是,在有东西真正能推翻这老东西之前,你还得按这老东西考虑问题。


我在上面回帖里说到的那个浙大本科生,毕业时曾去多家公司应聘,也去过金蝶。金蝶是一道笔试,七道面试。六道半是技术人员面试,第一次是人力资源部和他谈了不到五分钟,就由技术人员接上。谈的内容,自然OO思想要占一大块。结果,去的一群浙大生,只招了两个。一个硕士生做支持工程师,他却是研发工程师,而且去的就是那个中间件公司(最后去上交大读研了)。一个最低,一个最高。
只要有本事,不怕找不到识货的。

>>>数据库不是用来表达系统的。
现实中,就是先通过数据库来表达系统的.实践经验告诉我,面向数据库设计就是先通过数据库来建立系统模型,来表达系统的.

我觉得我们讨论的东西有点偏离主题了.变成在说是OO对,还是SP对了. :)

实践(个人不喜欢空谈,实践检验真理)让我认为OO是个好东西,但是在中国目前的国情下可能是不合适的,目前大多数中小型企业应该是不会考虑OO的.
目前还是需要扎实的SP功底, 同时也必须不断提高自己OO. 暂时不能认为学了OO就想在"部分"企业混下去.(说我自己).

有个问题我问了很多人,都没人给过确切的答案:
中国"中小型"软件企业,到底有多少在搞OO的?

随便说一下,个人觉得DDD的那本书很不错,因为这本书没有空谈OO的技术,而是有很多实践经验来说明.jdon的banq的一些观点也很不错,从实践中而来.也正是这样才让我下决心实践OO.
个人感觉一些牛人谈技术的时候更多从理论上说明,其实很口头上的话大家都明白,但是就是缺少实践经验支持.
[该贴被BinnyJ于2009-05-12 11:38修改过]