软件开发流行的原则:don't repeat yourself

来源:互联网 发布:淘宝开店托管充值软件 编辑:程序博客网 时间:2024/06/09 22:47

通俗的讲就是尽量少粘贴复制。

DRY简而言之,就是不要写重复的代码。原则本身很简单,但是,对于OOAD来说,有着非常重大的意义。

1合理的抽象,代码提取
DRY利用的方法就是抽象:把共同的事物抽象出来,把代码抽取到一个地方去。这样就可以避免写重复的代码。

举一个DRY的典型例子,如果在一个类构造的时候,需要进行成员的初始化,在进行了某些操作以后,同样要进行初始化,那么就可以把“初始化”抽象出来,做成一个方法Initial(),在构造和需要用到的地方调用它。

虽然,抽取重复代码是利用DRY的一个好的开端,但DRY的实质是,一个需求,用一个部分来完成。当你试图避免重复代码的时候,实际上,你做的应该是用一段代码来完成一个需求。

为什么要用DRY原则?DRY会给代码维护带来很大的好处。以类的初始化为例,假设类修改了,增加、减少或是修改了成员,如果不写 Initial(),那么你可能至少要修改两处,而且,修改之处也可能出现不一致,维护成本大大增加。而写了Initial()方法,那么只要集中修改 Initial()就行了。

2正确的姿势使用开源库
开源绝对是个好东西。
凡是,我们不能从头开始吧。
选择一个知名度高,文档齐全,比较成熟的开源库。

3 How to select open source libraries
1. 首先根据自己的项目性质选择合适的开源许可证。

 对你所开发软件的顾客和应用对象来说,许可证是否适用非常重要。例如,在受监管的环境下,通常只有Apache2可用。
  1. 确定你要解决的问题类型。

    例如需要解决的是软件的分发、缓存、持久性还是松散耦合?

  2. 提炼出问题的元标签和描述性短语。

    例如,如果你需要解决的问题是关于在多个机器中的最佳路径,你的标签或短语可能会是遗传算法、job-Shop Scheduling、规划图、优化调度算法、最短路径等。

  3. 浏览codeplex, google code or sourceforge (github.com 也是个很有价值的网站) ,并列出初步筛选到的开源库。

    例如:在IoC/DI列表里,可以找到ninject, structuremap, autofac, windsor等开源项目。

  4. 找到这些项目的主页,分别查看项目的最新进展,标出那些很久没有更新或者已经停止开发的项目。

    注意主页上的新闻、发布通告、提交记录、网站更新等。我一般会从列表中删除掉那些超过6个月没有做更新的项目。

  5. 到代码库页找到相关测试组件。

    建议你将没有单元测试组件的项目从列表中删去,也许你觉得这个要求过于苛刻了,但如果没有单元测试,如何能保证这个项目的质量呢?

  6. 在项目主页中确认有相关文档。

    从选好的项目列表中删去那些没有文档、代码示例或适用指南的项目。毕竟学习一个全新的工具或框架我们需要付出一定的精力,一个全面细致的文档是非常必要的。

  7. 从版本控制系统中取出项目源代码,查看是否有扩展点(extension points)。

    理想的开源库或框架并不限制你使用特定的日志框架或依赖注入容器(DI container)。而多种扩展点可以为你提供定制化日志系统、容器等的可能性。

还有其他一些筛选原则,你可以根据所作项目的需求进行考查:

是否附有构建脚本(build script)?

该开源项目小组是否持续使用同一集成开发环境?

该开源项目是否有清晰的road map?

该项目是否设有问题跟踪器(issue tracker)?

是否很快就有社区补丁推出?

在社区中,关于该项目的问题反馈是否迅速?

其他的开发者是否乐于使用该开源库,在社区中关于该项目的知识技巧是否很快传播?

有多少活跃的项目贡献者?

版本号管理是否清晰?

对于来自社区的具体需求,该项目的改进和集成情况?
英文链接:http://www.planetgeek.ch/2010/06/20/how-to-select-open-source-libraries/

0 0