徐先生ID:robotom
[修改头像]
6833次访问,排名12709好友2人,关注者2
Just do it.
http://blog.csdn.net/robotom
robotom的文章
原创 17 篇
翻译 0 篇
转载 0 篇
评论 2 篇
robotom的公告
DebuggerAide 1.0.1.103 Beta3版本已经开始做了。
最近评论
dandelionl:请教:电子地图是否最后会像物流业一样,前几年新闻还说非法,但现在中国邮政已经只占40%以下的市场,其余已经被瓜分了,还是计算机行业的特殊性造成电子地图会被牌照控制住?

对电子地图运营实施严格监管的原因有二:
一是地图属国家机密,比如大使馆、某些研发机构等不允许在地图上予以显示,必须对地图测绘、生产进行监管;
//问:地图属于国家机密还是地图可能包含的……
roger_77:有机会试试
robotom:雁过留声,人过留名.
不管是有同感还是异议,robotom都同样的欢迎您.


roger_77:有空要好好看看.希望从中能得到更多更好的启发.
GPS地图:,都是从不成熟走向成熟的,必然经历一个从婴幼儿期到儿童期到青少年期到中年期到老年期,最后迈向死亡的过程,只是时间的长短不同而已.中国地图市场也应如此.现在可以说处在儿童期,最多是青少年期,犯了错误还是可以纠正可以原谅的,可塑性还是很强的.毕竟中国地图市场的大格局还没有形成,至少不成熟,还存在很多变数.在这个时候,搞这么个牌照出来,无异于一记闷棍,一包猛药.在这个正在成长的关键时期, 更需要的……
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
相册
C_C++
存档

原创 写可复用的C/C++代码

新一篇: 找出引发崩溃的幕后真凶

 

 

写可复用的C/C++代码

在现有软件的新版本开发的过程中,老板最希望看到的是能够在最大限度复用现有代码的情况下扩展软件功能从而满足新的需求。软件架构从框架上决定了代码复用的程度。只有设计良好的应用框架,才可能最大限度的保证代码的复用;对于面向对象方法而言,类设计对于代码复用的重要性自然不必说了。本文试图从软件设计的角度来考察代码级的复用问题。

保证软件可服用的一个最高原则,也是最简单的办法,就是从架构、模块、类等层次上采用各种设计模式达到各自层次上的低耦合的目的。

  框架要反映出问题的真实面目

  开发软件的终极目的是为了解决实际应用问题,应用框架是应用逻辑的高度抽象,从不同的视角观察应用问题,会得到不同的解决方案,从而得到不同的抽象结果,也就是不同的应用框架。正因为应用框架只是应用问题从某个视角观察出来的一个抽象,因此,它不可避免的与应用问题存在或多或少的的冲突,这些不一致的地方最终会为软件设计工作带来麻烦。因为这些冲突导致我们在设计和编码过程中,会不断遇到各种“意外”的情况,我们将不得不努力以曲线救国的方式来消除这些冲突。这种额外的消除冲突的工作,对于软件开发工作很不利,有时甚至带来性能问题。

如果把理想的应用框架比作一幅优雅的风景画,那么这些冲突就是画上比较显眼的令人不舒服的污垢。举个磨具的例子,要生产某个产品,可以先按照产品规划做一个磨具,再按照磨具来制造出最终产品;这里规划的产品是应用问题,磨具是应用框架,生产出来的产品是最终软件;如果磨具不是你想要的,生产出来的产品肯定跟规划的产品有很大差别。这里想说的是,一个好的应用框架应该尽可能真实的反映出应用问题的真实面目,至少应能真实地反映出我们关注的方面。

 试想,一个框架在满足现有需求时尚且需要修补各种“意外”情况,当它面临将来未知的新需求时,又如何能很好的适应呢,不能适应又谈什么复用呢?良好的架构是复用的基础。

 隔离应用框架与业务模块

  如果应用框架与业务模块混杂在一起,形成一个高度耦合的状况,那么在软件的升级开发过程中,应用框架与业务模块都需要变化,甚至完全不可用,而且新产生的系统中,框架和业务模块都是未经过验证的。如果二者各自独立,那么可能保留早期版本的框架不变,只是变化业务模块,或者新增加一些新的业务模块,而框架已经是经过验证的,从而实现了框架的复用。最理想的情况是,新增加一些业务功能,不用修改框架和现有业务模块,只需要增加一个新的业务模块。

   

分离耦合

由于应用问题是复杂的,系统又往往是一个有机的整体,因此很难做到业务模块之间绝对的绝缘。既然各个业务模块做不到老死不相往来,那么模块之间可能存在依赖或者关联的关系。我们应该如何处理这些耦合呢?绝对绝缘是做不到,分离出存在耦合的部分,却是可以做到的。想象一下,不断的分离出耦合的部分,大模块中分离出一个小模块,用于处理模块之间的交互,小模块又分离出耦合的部分,反复几次,理论上应该可以找到模块之间真正需要交互的部分。如果将来某个模块变化了,那么只会影响到其它模块的真正需要变化的很小的一部分存在耦合的部分。也就是说,在未来的软件升级开发时,会最大程度的复用现有版本的成果。

 

发表于 @ 2007年05月09日 23:39:00|评论(loading...)|编辑

旧一篇: 写别人看得懂的C/C++代码(2)

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © robotom