← Writing

优雅的代码,是写给人看的诗

编程语言终将演化,但清晰与简洁的美学永不过时

我读过两种代码:一种像合同条款,密集、规范、毫无温度;另一种像散文,节奏分明、意图清晰,让人看完会心一笑。

代码是写给人看的,机器只是顺便执行

这句话出自 Donald Knuth。当一段代码被写下,它将在未来无数次被打开、被阅读、被修改——而写它的那一刻,常常是它一生中被理解得最清楚的瞬间

之后呢?三个月后的你、半年后的同事、两年后的新人,他们没有你写代码时的上下文。所以代码必须自己讲清楚自己是谁、为什么存在、能做什么。

命名:先把名字想好,再开始写

// 不好
function check(d) {
    if (d.s === 1 && d.t < Date.now()) return false;
    return true;
}

// 好
function isOrderStillValid(order) {
    const isCanceled = order.status === ORDER_STATUS.CANCELED;
    const isExpired = order.expireAt < Date.now();
    return !isCanceled && !isExpired;
}

后者多了几行,却节省了未来无数次的”这是什么意思”。

三个习惯

一、变量名讲清意图

d 不知道是什么,data 太宽泛,order 才有所指。多写两个字符,少写一段注释。

二、函数只做一件事

如果一个函数的名字里出现了 “and”——比如 loadAndValidate——它应该被拆成两个。

三、删除比新增更难,但更值得

每一行代码都是一笔债。真正成熟的工程师,删掉的代码比写下的多。

YAGNI 与 KISS

这是两个让我反复回到原点的缩写:

  • YAGNI: You Aren’t Gonna Need It. 不要为想象中的未来需求加抽象。
  • KISS: Keep It Simple, Stupid. 简单是终极的成熟。

它们看似简单,实践起来却很难。因为我们总忍不住”多做一点”——多一层抽象、多一个参数、多一个 hook。但每多一点,就多一笔被未来的人付的债。

写在最后

所谓优雅,从来不是华丽。

是该有的都有,多余的都没有。

是读者读到的时候,心里轻轻”哦”了一声——

然后继续做手头的事,没有被打断。

写代码这么多年,我越来越相信:编程是一种克制的艺术。