编程笔记

编写整洁代码的 7 个习惯

2025-08-15 · 阅读约 8 分钟

← 返回首页

每个程序员都能写出能运行的代码,但写出整洁、易读、易维护的代码,才是真正的功力。Robert C. Martin 在《Clean Code》中说:"任何一个傻瓜都能写出计算机可以理解的代码,唯有优秀的程序员才能写出人类可以理解的代码。"以下是我在日常开发中总结的 7 个值得养成的编码习惯。

1. 有意义的命名

变量名、函数名、类名都应该传达意图。当你看到 elapsedTimeInMs 时,你立刻知道这是一个以毫秒为单位的耗时值;而看到 t 时,你完全不知道它代表什么。

// ❌ 不好的命名
let d = new Date();
let list = getUsers();

// ✅ 有意义的命名
let currentDate = new Date();
let activeUsers = getUsers();

好的命名让代码"自文档化",减少注释的必要性。命名时问自己:三个月后的人(可能是你自己)看到这个名称,能理解它的含义吗?

2. 函数只做一件事

一个函数应该只做一件事,并且做好这件事。如果你发现一个函数超过 20 行,或者需要用"首先...然后...最后..."来描述它的逻辑,那它很可能承担了太多职责。

// ❌ 一个函数做了太多事
function handleUserInput(input) {
    // 验证输入
    if (!input || input.length < 3) {
        throw new Error('Invalid input');
    }
    // 解析数据
    const parsed = JSON.parse(input);
    // 保存到数据库
    db.save('users', parsed);
    // 发送通知邮件
    email.send(parsed.email, 'Welcome!');
}

// ✅ 拆分为多个小函数
function handleUserInput(input) {
    validateInput(input);
    const parsed = parseInput(input);
    saveUser(parsed);
    sendWelcomeEmail(parsed);
}

3. 避免魔法数字

代码中不应该出现没有解释的数字常量。把魔法数字提取为命名常量,代码的可读性会大幅提升。

// ❌ 魔法数字
if (password.length < 8) { ... }
setTimeout(cleanup, 86400000);

// ✅ 命名常量
const MIN_PASSWORD_LENGTH = 8;
const ONE_DAY_MS = 24 * 60 * 60 * 1000;

if (password.length < MIN_PASSWORD_LENGTH) { ... }
setTimeout(cleanup, ONE_DAY_MS);

4. 保持一致的代码风格

团队内统一代码风格不是强迫症,而是降低认知负担的必要手段。变量用驼峰还是下划线?缩进用空格还是 Tab?大括号换行还是不换行?这些都不重要——重要的是团队保持一致。建议使用 ESLint、Prettier 等工具自动化格式检查。

5. 写好注释,但更好的代码不需要注释

注释应该是解释"为什么",而不是"做了什么"。如果代码本身足够清晰,注释反而会成为噪音。但如果有一段业务逻辑背后的原因不显而易见,一定要写注释说明。

好的代码让读者理解"做了什么",好的注释让读者理解"为什么这么做"。

6. 错误处理不能偷懒

空的 catch 块是定时炸弹。捕获异常后至少要记录日志,最好能给调用者有意义的错误信息。吞掉异常会让问题在更深层、更难排查的地方爆发。

// ❌ 吞掉异常
try {
    processPayment(order);
} catch (e) {
    // 什么都不做
}

// ✅ 正确处理
try {
    processPayment(order);
} catch (e) {
    logger.error(`支付处理失败: orderId=${order.id}`, e);
    throw new PaymentException('支付处理失败,请稍后重试', e);
}

7. 小步提交,频繁提交

每次提交应该是一个完整的逻辑单元。小步提交让 Git 历史变成清晰的叙事线,方便回溯、Review 和协作。避免"一天提交 2000 行代码"这种大爆炸式提交。

小结

写整洁代码不是一朝一夕的事,而是持续练习的习惯。这 7 个习惯不需要一次性全部掌握,可以从今天开始挑一两个最有感触的,在下一次编码时就有意识地实践。久而久之,你会发现自己的代码质量有了质的飞跃。