代码重复怎么处理
写代码时,很多人会不自觉地复制粘贴一段逻辑,用在不同的地方。比如做用户登录验证、数据格式化、文件读取这些操作,一不小心就写了好几遍相似的代码。时间一长,改一处就得翻好几个文件,稍不留神就漏了,结果程序出问题还不好查。
这种情况其实很常见,尤其是在刚入门编程的时候。但代码重复不是小事,它会让项目越来越难维护,就像家里衣服乱扔,刚开始觉得省事,后面找什么都得翻半天。
把重复代码抽成函数
最直接的办法是把重复的部分单独拎出来,封装成一个函数。比如你有三处都在做字符串去空格、转小写的操作:
let email1 = input1.trim().toLowerCase();
let email2 = input2.trim().toLowerCase();
let email3 = input3.trim().toLowerCase();完全可以写个函数:
function normalizeEmail(email) {
return email.trim().toLowerCase();
}
// 使用
let email1 = normalizeEmail(input1);以后只要改这个函数,所有调用的地方都生效,不用到处找了。
提取公共模块或工具类
如果多个文件都在用同样的逻辑,比如日期格式化、金额计算,那就把这些功能集中放到一个工具文件里,比如 utils.js 或 helpers.py。需要的时候导入使用,避免每个文件都重写一遍。
比如在 JavaScript 中:
// utils.js
export function formatPrice(amount) {
return '¥' + amount.toFixed(2);
}
// order.js
import { formatPrice } from './utils.js';
console.log(formatPrice(19.9));这样既整洁,又方便统一调整格式。
利用继承或组合减少冗余
在面向对象编程中,如果有多个类有相似行为,比如“发送通知”这个功能,邮件通知、短信通知都需要记录日志、检查状态,就可以通过继承父类或组合公共对象来复用逻辑。
比如 Python 中定义一个基类:
class Notifier:
def log(self, message):
print(f"[Log] {message}")
class EmailNotifier(Notifier):
def send(self):
self.log("发送邮件中...")
# 发送逻辑子类自动拥有 log 方法,不需要每写一个通知方式就重写一次日志打印。
善用配置代替硬编码
有时候看起来是重复代码,其实是把相同的配置写在了多处。比如连接数据库的地址、超时时间,分散在几个脚本里。一旦要改,就得一个个替换。
更好的做法是统一放在一个配置文件中:
// config.js
export default {
timeout: 5000,
apiUrl: 'https://api.example.com'
};其他地方引用这个配置,改一次就行。
别怕重构,早改早轻松
很多人觉得“现在能跑就行”,拖着不去处理重复代码。可项目越大,改动成本越高。与其等后期花三天改一堆问题,不如早点花半小时整理一下。
可以从小处着手:看到两处一样的代码,就停下来想想能不能合并。久而久之,代码会更清爽,自己读起来也舒服。
代码不是写完就结束了,更像是在打理一间屋子。定期收拾,才能住得舒服。