程序员修炼之道系列 | 代码中邪恶的重复是怎样发生的?
原创- 发表时间 2021-04-06
- 阅读数 3587
- 最后编辑:程一凡 于 2024-07-04 13:50:42
一、什么是DRY?
Don’t repeat yourself,简称DRY,是软件工程中广泛且被普遍接受的最佳实践。DRY原则上是要求系统中的每一部分,都必须单一、明确、权威地表达。其实就是可靠地开发软件、并让开发项目更易于理解和维护。DRY原则中最基本的就是不要重复代码。
在软件工程中,“干净的代码”是一种理想的追求。能够辨别重复,并通过适当的实践消除重复的程序员,比一直在重复代码的程序员,写的代码会更清洁。
很多人将DRY限定为“不要写重复的代码”,但它更强调的是对知识和意图的重复。
二、重复是怎样发生的?
编程过程中,我们所见到的大多数重复问题,大致可以分为以下四类:
1、强加的重复
大多数人都在无力避免重复的情形下工作过,
比如有的项目可能会使我们重复共有的定义和过程,或有的编程语言自身要求某些重复信息的结构。
比如文档规范中经常强调的注释,但事实上无用的注释会使代码变得糟糕。如果运用DRY的法则,就是把浅显易懂的知识放在代码中,把注释保留给其他高级的说明。否则,就是在重复知识。
2、无意的重复
来自代码设计中的错误,通常会让开发者意识不到他们在重复信息。
3、无耐性的重复
这种重复通常是由于开发者偷懒,认为重复会让功能的实现变得更容易。也会因项目时间的限制,而驱使一部分开发者拷贝、修改原来的代码,走捷径。
欲速则不达,重复也许可以节省几秒钟,但一旦出现了问题,反而会花费更多的时间去修复。
4、开发者之间的重复
最典型的就是下面这个例子。美国的一个州,在对政府电脑系统进行千年虫问题检查时,审计发现有超过一万个程序,每个程序都包含不同版本的社保号验证代码。
同一个团队中不同开发者的重复,可能是最难检测和处理的。这些重复可能存在好多年,都不容易被发现,会导致各种维护问题。
三、初步实现DRY,可以尝试这样做
1、停止重复不必要的代码;
2、当代码重复 3 次时,停止并思考是否需要进一步抽象代码或工具类;
3、对历史遗留代码增加测试程序,梳理逻辑,增加说明文档并通知相关人员;
4、适时讲解项目,明确项目目前已有的功能和代码,减少因不了解项目而造成的重复。
写好一段代码需要时间,但写一段好代码需要更长时间。把优秀的软件设计原则变成习惯,会节省很多开发时间,更利于维护和扩展软件项目。Don’t repeat yourself,你还有其他更好的方法吗?欢迎评论区留言~