DRY原则

father said don't repeat youself

DRY:Don’t Repeat Youself(不要重复你自己)

出处:Andrew HuntDavid Thomas合著的《The Pragmatic ProgrammerFrom Journeyman toMaster

定义:在一个设计里,对于任何东西,都应该有且只有一个表示,其它的地方都应该引用这一处。这样需要改动的时候,只需调整这一处,所有的地方就都变更过来了。

场景:需求、数据库结构定义、算法、类定义、方法定义、模板代码、说明文档

重复的危害:一份功能相同的代码在多处出现,这对要修改这份代码的攻城狮而言是灾难,后续的码农需要了解这个功能在整个软件项目中都出现在哪里,但一个大型项目,了解整个软件功能的人不是没有,太少。通常95%的时候,会遗漏修改某个地方,测试人员只有会全面的测试才能发现这个bug,很有可能是客户提出来的。这是航空业的空难。

优势:单一维护,在需求多变的时代里,修改是不可避免。单一的维护无疑可以显著改善代码的质量。

案例一:

周星弛在早期拍过无数的无厘头电影,则叫卖整个电影市场。但对现在时日无多的他,绝不会再重复自己去拍自己已经拍摄过的无厘头,对周星弛而言早期可能迫于生计,但目前而言,再拍过去的电影,无疑是在浪费自己的生命,生命是最可贵的。重复自己与重复他人都是浪费生命,都不能给这个世界增加色彩。

案例二:

一般的jsp页面,都分head,body,foot,我们会include head.jsp及foot.jsp从而避免在所有的jsp页面都写大量的头部。当头部和尾部需要修改时,只修改一处即。sitemesh及volocity的layout都是这个原则的最佳实践。


草木全
分享到:
除了集群要用到数据库的复制,一般的项目如果有多个子项目,如果一份数据要存在多处,而不是使用webservice通信,那这个就严重的违背了Don’t Repeat Youself原则。
1
当我看到一个表结构的实体,会出现在多个java类的时候,坏的味道就出来,维护麻烦的要死。有生之年,还真见到有人这么用,当惊世界殊啊。
0
共 2 条   当前1/1页

© 2014 究问社区 copyRight 豫ICP备13003319号-1