锁定老帖子 主题:软件开发的七个原则
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-02
最后修改:2010-12-02
关于代码重复最著名的单词是Kent Beck的Once And Only Once,也就是说软件操作的任何一个片断--不管是一个算法,一个常量集合,用于阅读的文档或者其他东西--应当只出现一次。
我们可以来看看DavidHooker提出的7个软件开发原则:
第一原则: 存在的理由(Pattern: TheReason)一个软件系统存在的理由就是:为它的用户提供价值。你所有的决定都取决于这一点。在指定一个系统需求,在写下一段系统功能,在决定硬件平台和开发过程之前,问你自己一个问题,“这样做会为系统增加价值吗?“,如果答案是”yes”,做。如果是”No”,不做。这个原则是其他原则的原则。
第二原则 KISS (Pattern: KeepItSimple) 软件设计不是一个轻描淡写的过程。
第三原则 : 保持远见(Pattern: MaintainTheVision) 清晰的远见是一个软件项目成功的基础。没有这样的远见,项目开发最后就变成天天为一个不好的设计做补丁。Brooks说过: 概念的完整性是系统设计中最重要的问题。 Stroustrup 也说: 有一个干净的内部结构识构建一个可理解、可辨识、可维护 、可测试系统的基础。 Booch则总结道: 只有当你对系统的体系由一个清晰的感觉,才可能去发现通用的抽象和机制。开发这种通用性最终导致系统更简单,因此更小,更可靠 如果你不断地复制、粘贴、修改代码,最终你将陷入一个大泥潭(the Big Mud),你永远不可能对系统有一个清晰的认识。 第四原则: 你制造的,别人会消费 (Pattern: WhatYouProduceTheyConsume) 软件系统不是在真空中使用的。其他人会使用、维护、文档你的系统。这依赖于对你系统的理解。所以,你设计、实现的东西应当能够让别人理解。要记住,你写的代码并非只给计算机看,你要时时记住,代码还要给人看。(Kent Beck) 如果到处泛滥似是而非的代码,别人如何能够辨别这些代码的相似和不同,如何去理解这些代码之间具有何种关系。 第五原则: 对将来开放( Pattern BuildForTodayDesignForTomorrow) 一个成功的软件有很长的生命期。你必须能够使得软件能够适应这样和那样的变化。所以,一开始就不要软件设计到死角上去。请总是问一下自己“如果这样,那么。。?“这个问题,你要考虑到各种各样的可能性,而不光光是图省事。复制,粘贴一下即可。 第六原则:为重用做好计划
软件模式是重用计划的一种。不断重复的代码显然不是这样的计划。 (See CommentsOnSix) 第七原则: 思考! 在采取任何动作之前首先做一个清晰、完整的考虑,这样才能产生更好的结果。如果你考虑了,但还是产生错误的结果,那么这种努力也是值得的。在你学习或研究类似的问题时,更容易理解和掌握。
Martin Fowler在它的Refactoring一书中有很多用来处理代码重复,包括:
1.同一个类的两个方法中有相同的表达式,使用Extract method,然后大家都调用该method;
2.两个兄弟子类之间有相同的表达式,那么在这两个子类中使用Extract Method,接着使用pull up field,移到共同的超类
3.如果结构相似而并非完全相同,用Extract method把相同部分和不同部分分开。然后使用Form Template method.
4.如果方法使用不同的算法做相同的事情,那么使用substitute algorithm
5.如果在两个不相干的类中有重复代码,那么在一个类中使用Extract class,然后在其他类中使用该class对象作为元素等等。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-02
受教了
|
|
返回顶楼 | |
浏览 1923 次