97-things-every-programmer-should-know-30:DRY(Don‘t Repeat Yourself)

在所有的编程准则中,DRY也许是其中最基础的一个了。该准则是从《程序员修炼之道》中首次提出。它是其他许多已知的软件开发实践和设计模式的基石。一个能够识别重复代码并且知道通过适当的练习和合适的抽象来解决问题的开发者能开发出更清晰的代码,相比而言给应用增加不必要的重复性的开发者会持续污染应用。

重复意味着浪费

每一行写进应用的代码最后都需要维护,也就意味着是未来bug的潜在来源。重复造成了不必要的代码库膨胀。导致更多机会出现bug,并增加了系统的偶然复杂性。更多重复性代码也会导致应用开发者无法全面的理解整个应用,或者可以肯定的是修改一处代码容易遗漏另一处重复的代码。

开发过程中的重复需要自动化

软件开发中的很多过程是具有重复性的,是容易做到自动化的。所以DRY准则也适用于这些情况,而不仅仅是源代码开发。手工测试缓慢,易错且难以具有可复制性,所以应尽量使用自动化测试套件。手动集成软件非常耗时且容易出错,所以一个构建过程可以尽可能频繁的自动运行,理想情况是每check-in就做一次。只要存在可以自动化的痛苦的手动过程,就应该实现自动化和标准化。目标是确保只有一种方式去完成任务,并且尽可能减少痛苦。

重复的逻辑调用需要自动化

逻辑重复可表现为多种形式。复制黏贴if-else/switch-case是其中最容易发现和纠正的。许多设计模式有明确的目标是减少或消除逻辑性重复的代码。如果一个典型的对象在正式可用之前需要固定做几件事,可使用抽象工厂和工厂方法来实现。如果一个对象有许多可变的行为,这些行为能通过策略模式注入而不是大量的if-else结构。DRY也能应用于数据库模式设计。

DRY:一个基础的准则

其他一些软件开发准则也跟DRY相关。如一次性原则应用于基础的代码行为,可认为是DRY的子集。著名的开-闭原则,意思是:软件实体应该向扩展开放,而向修改关闭。只有在实践中遵循了DRY该原则才会生效。同样的,著名的单一职责准则需要一个类仅有“一个改变的理由”,也依赖DRY。

小结

DRY给软件开发者提供了很多基础的指导,目标是创建更简单,可维护性更好的高质量应用。当出现了需要重复性的场景(如高性能,数据库冗余),可以使用重复来解决这些实际问题,但切不可用来解决想象中的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值