论DRY原则如何提升软件质量

发表于:2009-3-05 14:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:funcreal    来源:javaeye

  DRY——Don't Repeat Yourself Principle,直译为“不要重复自己”原则^_^

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

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

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

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

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

  既然DRY是关于“一个方法,实现一个需求”的,那么,是不是可以把DRY应用到需求分析中?呵呵,答案是肯定的,而且,个人认为,这是个非常好的主意。多个重复的需求可能导致多个重复或者相近的类,最后导致重复代码。所以DRY绝不仅仅对代码适用,它是一个广泛适用的原则。

  接下来举例说明DRY原则如何提升软件质量,结合作者的实践,以某网上营业厅3期项目为例,讨论了DRY原则在整个软件生命周期过程中,对于保证软件质量的指导作用和意义。

  这其中包括了需求分析阶段,软件设计和开发以及软件测试等阶段。通过在这些软件过程中使用DRY原则,提高了软件的易用性,可维护性和可扩展性等重要的软件质量评价指标。最后,作者提出了对DRY原则的展望和未来围绕DRY原则可能出现的新工具、新方法。

  先介绍一下项目吧,2008年8月到2008年12月,我参加了某省级无线运营商的网上营业厅3期项目,在这个项目中,我担任了项目经理的角色。

  网上营业厅是该运营商的省级网上门户,是电子化营销渠道的重要组成部分。其主要功能包括:企业形象宣传;新业务、新活动推广;客户进行业务查询和办理等。随着客户对电子渠道认知度的提升,原有的网上营业厅2期在硬件方面,已经无法满足日益增长的客户数。在软件架构方面,已经无法快速响应频繁复杂的需求变更。因此,该运营商提出了对于网上营业厅3期项目的建设计划。3期建设的预期目标为:把网上营业厅的注册客户数从200万提升到500万,并从硬件、软件等各方面保证客户正常使用。

  该项目的人员组成包括:1名项目经理,1名软件开发经理,1名系统实施经理,3名程序员,2名页面制作,2名系统实施共10人。项目的开发平台为J2EE。

  该项目的硬件大体情况为:14台IBM BCH ,安装apache,作为 web前端服务器。6台IBM P52A,安装weblogic,作为应用服务器。2台IBM P570作为身份认证服务器。2台IBM P570,安装oracle,作为数据库服务器。操作系统使用了红帽企业版 linux 5,以及AIX5.3。

  目前,网上营业厅3期成功通过终验,并按时上线。在月初、月末的业务办理高峰期,能够保证客户的正常访问。此项目得到了该省级无线运营商和我所在公司领导的认可。

  首次接触“DRY原则”这个概念时,我认为它仅仅是应用在编码范畴的一个编码原则,旨在帮助程序员避免使用复制,粘贴等手段,到处拷贝代码。随着对软件项目的认识和实践,我发现DRY原则实际上是贯穿整个软件生命周期的,保证软件质量的重要原则。从广义上来讲,软件中的各种资源和代码一样,都可能面临着被到处复制的危险。当客观条件发生变化,要求资源发生变更的时候,就要同时修改多个资源。如果这些资源被重复地使用在系统中的各处,将直接影响软件质量中的可维护性和可扩展性因素。

  下面,我将结合网上营业厅3期项目,详细论述我们的项目组是如何在项目中成功地借助DRY原则来保证软件质量的。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号