1. 概述
在本篇文章中,我们将介绍 DRY 这一软件设计原则,并通过示例说明其在代码中的实际应用。
2. 定义
DRY(Don’t Repeat Yourself),即“不要重复你自己”,是一种旨在消除代码逻辑重复的软件开发原则。
该原则最早由《The Pragmatic Programmer》一书提出,核心思想是:同一份逻辑在整个代码库中应该只出现一次。
3. 示例
举个例子,如果我们把一段特定逻辑封装成一个函数,并在多个地方调用它,这就是对 DRY 原则的实践。
以下是一个在未使用 DRY 原则时的伪代码,它接收两个华氏温度值并转换为摄氏温度:
algorithm ConvertTemperaturesBeforeDRY(fah1, fah2):
// INPUT
// fah1, fah2 = 两个华氏温度值
// OUTPUT
// 输出对应的摄氏温度值
cel1 <- (fah1 - 32) * 5 / 9
cel2 <- (fah2 - 32) * 5 / 9
print cel1
print cel2
下面是使用 DRY 原则优化后的版本:
algorithm ConvertTemperaturesAfterDRY(fah1, fah2):
// INPUT
// fah1, fah2 = 两个华氏温度值
// OUTPUT
// 输出对应的摄氏温度值
cel1 <- fahrenheitToCelsius(fah1)
cel2 <- fahrenheitToCelsius(fah2)
print cel1
print cel2
function fahrenheitToCelsius(fah):
// 将华氏温度转换为摄氏温度
return (fah - 32) * 5 / 9
可以看到,转换逻辑被集中到了一个函数 fahrenheitToCelsius
中,从而避免了重复。
4. DRY 的优势
✅ 提高可维护性:当需要修改逻辑或添加新功能时,只需修改一个地方,而不是在多个地方重复修改。
✅ 提高可读性:代码更简洁,没有冗余逻辑,更易于理解和调试。
❌ 注意:滥用 DRY 也可能带来问题。比如过度抽象、创建不必要的函数等,反而会增加代码复杂度,降低可读性。
⚠️ 所以,在使用 DRY 时要把握好度,避免为了“不重复”而“强行抽象”。
5. 与 DRY 相反的做法:WET
WET(可以理解为 We Enjoy Typing、Write Every Time、Waste Everyone’s Time)是指在代码中重复编写相同的逻辑,这与 DRY 原则背道而驰。
❌ 这种方式会导致代码难以维护和阅读,尤其是当逻辑需要修改时,必须同步修改多个位置,极易出错。
6. 总结
本文介绍了 DRY 软件设计原则的基本概念、示例和优势。
DRY 是一种非常实用的设计理念,但要注意避免过度抽象。
在实际开发中,合理使用 DRY 可以显著提升代码质量与可维护性。