美文网首页
开发规范 | DRY 不要重复自己

开发规范 | DRY 不要重复自己

作者: 双鬼带单 | 来源:发表于2021-02-09 21:49 被阅读0次

DRY 是 Don't Repeat Yourself 的缩写,即不要重复自己

原因

重复代码是开发中经常会遇到一个棘手的问题。发生这样的原因有很多

  1. 为了不影响原来同事写的代码,自己又复制了一份(毕竟改别人的代码,出了问题算谁的);
  2. 代码很短,所有自己又写了一遍(3句代码,有必要用个方法吗?最后发现这 3 句代码复制的次数还挺多)
  3. 有一段神奇的代码,在线上运行的很稳定,虽然感觉有问题,但不敢改,新做的需求还是复制一份再改吧(随着开发周期和人员变动,这种现象很很常见的)
  4. 同一个接口版本迭代后,有个钉子户一直不升级,不得不复制代码保证老接口能用了
  5. 项目周期不够了,重构是来不及了,赶紧复制一份改改
    ...

总之原因很多,但最终都导致了相同或者相似代码片段或者逻辑大量重复,难以维护。

重复代码的坏处

代码难以修改

在我工作中接触一个项目,其中计算用户逾期罚金的方法散落在项目各处,为了加一套新的计算算法,开始在项目中全局搜索关键字,当自己感觉已经全部改完的时候,测试开始进行测试。

测试:你这个逾期金额是不是算错了,应该是 xx
我:你抓包看看,从哪里调用的
测试:xxx/xxxx/xxxxx 这个接口,你看下
我:我艹,这里没改,我改下,等下你发布试试

然后陷入了死循环,测试找一处,我改一处

测试:你这逾期应该用老版本的算法,你是不是改错了
我:用老版本吗?我看看。我艹,这里不应该改。

当代码重复多遍时,很难将相似代码全部覆盖,甚至有的代码可能不需要改

代码可读性下降

毕竟重复代码可能只是相似,甚至看上去极度相似,能抓耳挠腮看到峰回路转之后,才知道眼前一片漆黑

无法测试

很难知道哪些重复代码是测试通过的,哪些是没有测试通过的或者疏漏的,甚至你无法分辨哪份复制才是正常的

怎么做

  1. 停止重复代码
  2. 当代码重复 3 次时,立刻停止并考虑是否需要抽象代码或者做成工具类
  3. 对历史遗留代码增加测试程序,梳理逻辑,增加说明文档并通知同事
  4. 适当给同事讲解项目,让他们知道原来已经有了 xx 功能,xx 代码,减少因为不了解造成的重复
  5. 对于大量重复魔法值使用统一的常量

当然写好代码需要时间,写好代码需要更长的时间

DRY 不仅仅适用于代码,在开发中大量重复的手工操作,能否替换为标准的自动化操作呢?

我是一个头发茂密的程序员,欢迎关注双鬼带单

相关文章

  • 开发规范 | DRY 不要重复自己

    DRY 是 Don't Repeat Yourself 的缩写,即不要重复自己 原因 重复代码是开发中经常会遇到一...

  • 如何写出好代码之消除代码中的重复

    软件开发中,有个很重要的DRY原则,即Dont Repeat Yourself,也就是不要重复自己。 重复的代码会...

  • 代码设计原则

    1、DRY原则DRY是 Don't repeat yourself 的缩写,意思是"不要重复自己"。它的涵义是,系...

  • 不要自我重复 (DRY)

    不要自我重复 (DRY) 应用程序应避免在多个位置指定与特定概念相关的行为,因为这种做法经常会导致出错。 有时,如...

  • 【程序员笔记】rails使用will_paginate实现分页

    rail的一个巨大特点就是DRY,不要重复自己,所以不要重复造轮子,合理使用gem快速节省自己宝贵的时间。 那么如...

  • 提示15

    今天继续学习本书的提示十五:DRY——不要重复自己。 作者首先给出了DRY原则的定义:在一个系统中,每一处知识都必...

  • 俊超说 | DRY,不要重复你自己

    系统中的每一项知识都必须具有单一、无歧义、权威的表示。 ---DRY原则 《伏尔加河上的纤夫》 俄国批判现实主义...

  • 21 - DRY原则

    DRY 原则,它的英文描述为:Don’t Repeat Yourself。中文直译为:不要重复自己。将它应用在编程...

  • Effective Python 笔记摘录2

    Item5:写Helper函数而不是复杂的表达式。(DRY原则: 不要重复自己(Don’t repeat your...

  • 2022-01-03 设计模式之DRY与迪米特法则总结

    DRY 原则 1.DRY 原则我们今天讲了三种代码重复的情况:实现逻辑重复、功能语义重复、代码执行重复。 实现逻辑...

网友评论

      本文标题:开发规范 | DRY 不要重复自己

      本文链接:https://www.haomeiwen.com/subject/bhwcxltx.html