美文网首页
俊超说 | DRY,不要重复你自己

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

作者: AI_李俊超 | 来源:发表于2019-08-28 08:24 被阅读0次

系统中的每一项知识都必须具有单一、无歧义、权威的表示。

                                               --- DRY原则


黑牛和白牛有一天,一位记者来到了一块牧场,看见了一位农夫在喂牛。记者便上去搭讪道:“请问您每天给你的牛喂些什么呢?” 农夫说:“你问的是黑牛还是白牛?” 
记者:“黑牛”
农夫:“玉米和小麦” 
记者:“那白牛呢?” 
农夫:“玉米和小麦” 
记者有点迷糊了... 记者又问:“您每天给它们喂多少斤啊?” 
农夫:“你问的是黑牛还是白牛?” 
记者:“黑牛” 
农夫:“5斤”
记者:“那白牛呢?” 
农夫:“5斤”
记者有点不耐烦,便质疑的问道:“为什么同样的答案你却偏偏要让问我两次?” 
农夫淡淡地说道:“因为黑牛是我的” 
记者:“那白牛呢?”
农夫:“也是我的”

《伏尔加河上的纤夫》 俄国批判现实主义画家 伊里亚·叶菲莫维奇·列宾 1870年-1873年

本期“黑牛和白牛”的故事做启发,一起聊聊软件工程中重复的问题。无论你承不承认,在你所在的项目中也或多或少存在重复的痕迹。作为程序员,我们每天都在不停的进行着项目功能开发迭代,这个过程中伴随着环境的变化,也需要对原有的逻辑进行维护或增强特性。

当我们维护时,我们不得不找到并改变应用中的知识表示-那些嵌在系统中的代码逻辑块。问题是,在我们开发的规范、过程和程序中很容易重复表述知识。这个时候就是我们之前说的“破窗”,也就是重复的开始。
 那么重复是怎么发生的呢?我们列举以下几点和相关建议:1. 强加的重复(imposed duplication)。    这种情况往往是系统中我们没有更好的选择-环境似乎要求重复。
    a.重复的代码结构:可以使用过滤器或者代码生成器,减少重复的工作内容。
    b.代码中的文档:要把低级的知识放在代码中,它属于那里。把注释保留给高级的说明。
    c.文档与代码:考虑使用工具,同步代码和文档的同步。如接口文档工具swagger。2. 无意的重复(imnadvertent duplication)。    那些我们在开发中没有意识到的重复信息。    可能是在无意的设计中造成的。比如经常会要用缓存的方式来避免一些繁琐的操作时。这时候要我们要做的是使影响局部化,不要把重复暴露给外界。
3. 无耐性的重复(impatient duplication)。    ctrl+V,ctrl+C. 这个熟悉的操作,这样的开发节奏似乎更快些。    每个项目都有时间压力,这也是我们走捷径的内在驱动。相同逻辑的代码拷贝后做些改动。然后跑通逻辑。搞定!(这样真的可以吗?)。有时候“欲速则不达”,这个时候需要把一些细节明确,以避免一个小小的失误然后回来在找bug用多半个小时。
4. 开发者之间的重复(interdveloper duplication)。    同一团队或者不同团队中开发的时候重复了相同的信息,功能模块,方法或逻辑等。    最不好察觉和维护的重复就是开发者之间的重复。这个重复是从整个功能开始的,会给后期维护或者升级带来较大的难度。

那“知其所以然”后,我们能有哪些避免重复的方法呢?

1. 定期进行代码review。 把公用类和方法定期优化同步 ,减少重复造轮子。

2. 团队协作之间主动交流。对已经有类似的方法先考虑是否可以重用。

3. 沉淀公共知识的统一管理和同步。比如像之前我在启明星辰做的通用知识文档。

简而言之,目标就是“在系统中避免重复造轮子,让复用变得容易”。

草莓时刻:

1. 在你所在的团队项目代码中,找下存在哪种重复的情况并试着做点改变。

2. 和团队中的小伙伴相互代码review.(开放心态目的是学习和成长)。

俊超说,每天说点程序员的事。

欢迎留言交流。

相关文章

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

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

  • 代码设计原则

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

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

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

  • 不要自我重复 (DRY)

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

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

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

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

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

  • 提示15

    今天继续学习本书的提示十五: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/phiuectx.html