面向对象的目的是为了进化

面向过程在需求分析阶段是自顶向下的功能分解,设计阶段不一定自顶向下。但是错误或局限性在需求分析阶段已经引入,因为需求分析即系统的定义阶段,其自顶向下的功能分解很自然地将系统从输出出发定义成一个功能性系统。而功能性系统本质上是一种弱可进化性系统,所以面向过程的系统永远都在需求里面打转。

要从需求里面跳出来,必须设计一个进化型系统。哪怕是手工进化。设计进化型系统,必须从输出的源头也即输入开始设计。从输出开始的设计是功利性设计,是急功近利的结果。而从输入开始的设计,才是一种着眼于长期的,兼容未来的设计。根据一个朋友的讲法在印度只有那些大公司才会采用面向对象的设计。为什么呢?难道是因为面向对象的成本比面向过程要高,所以只有那些软件生命周期比较长的公司才会采用这种设计??,,,不过有一点可以肯定的是,相对于面向对象,面向过程的确更像是一种快速开发方法。而且不管怎样,面向对象显然意味着比面向过程更高的成本。如果没有必要的话,当然不应该选择它作为开发范式。

从输入开始并不意味着必须对领域进行建模。因为建模本身其实就是对软件的定义过程,而定义一个软件当然有很多种方法。选择何种方法的决定因素应该包含至少两个方面的考量:当前性能与长期进化的方向。对当前性能的考量比较简单,至于如何简单可以参考面向过程的开发方法。而对长期进化方向的考量则是一个真正的考验:一个怎样的模型,才能最佳地适合软件的长期演进需要?。。。既然已经逃出了面向过程的桎梏,我们得到一个绝佳的重构系统的机会,所以如何利用好这个机会才是现在真正的挑战。

概念,粒度,关系,结构,都是面向对象的考量点。

到这里,其实已经可以看出,简单地从领域开始其实是一个相当不错的选择。因为领域中的概念都是经过长时间考验以后剩下来的东西,它是现成的答案(也是有些面向对象者在方案选择时直接走向领域建模而不加任何思索的原因,因为答案就摆在那里,为什么我还要思考呢? ,,,but I am a skeptic!!!)。不过当然,这一点也只能在它存在即现实世界已经拥有这种模型的情况下成立。并不是所有时候都有良好的模型在那里等着我们去发现。那么,当它不存在时,我们怎么办?

思考。

哲学性思考。因为当我们在构建一个模型时,我们其实就在构建一种认识。认识是主观的,所以我们要做的其实也就是构建一种主观的东西:我们的世界观。。。事实上,凭空建模是一个极佳的表达我们的世界观的机会。也就是说,这是一个非常好的宣传或传播我们自己的思想的平台(也是为什么面向对象是一个极好的主体建模的工具的原因)。

建模的目的是为了长期演进。因为如果只是为了当前性能,面向过程就完全可以做到,不需要采用这种耗时更长,成本更高的开发范式。硬要为了面向对象而面向对象,则变成画蛇添足。所以不管你是怎么认识世界的,请确认你的这种认识不会在5到10年内被推翻

转载于:https://my.oschina.net/digerl/blog/33980

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值