王垠的编程智慧 | AI生成和翻译

Home 2026.03

问题: https://www.infoq.cn/article/wisdom-of-programming 这篇文章说了什么?

回答:

这篇文章标题为 “编程的智慧” (The Wisdom of Programming),作者 Wang Yin (王垠),发表于 InfoQ China2016年8月29日。阅读时长约70分钟(~21,000个汉字)。Wang Yin 是一位著名的且有主见的中国程序员/博主。本文分享了他个人编程哲学和高品质代码编写中宝贵的经验教训。以下是对所有主要主题的全面总结:


1. 反复打磨你的代码

王垠认为,提高编程技能的最有效方法是反复修改和打磨代码,而不仅仅是写更多的代码。他将此比作作家会丢弃比发表更多的内容——伟大的程序员删除的代码比保留的更多。你无法一蹴而就写出完美的代码;洞见会随着时间逐渐显现。


2. 编写优雅的代码

优雅的代码有两个关键的结构特征:


3. 编写模块化的代码

真正的模块化是逻辑上的,而不是物理上的。将代码拆分成许多文件/目录并不能使其模块化。模块化的真正工具是function——function 有明确定义的输入(parameters)和输出(return values)。他推荐:


4. 编写可读的代码

真正优雅的代码几乎不需要注释。过度注释实际上有害——注释会过时并 clutter 代码。相反,通过以下方式使代码自解释:

他警告不要让代码看起来像自然语言(例如 Chai.js 的 assertion 风格),这实际上降低了清晰度。


5. 编写简单的代码

不要盲目使用语言的每个特性。坚持可靠、经战火考验的子集。具体规则:


6. 编写直接/直观的代码

即使显得更长,也选择更清晰、更显式的写法。例如,避免滥用 short-circuit evaluation(&&||)作为 if 语句的替代。这很 confusing,因为 logical OR/AND 是为效率而设计,而不是控制流的可读性。

而非:

if (action1() || action2() && action3()) { ... }

写成显式版本:

if (!action1()) {
  if (action2()) {
    action3();
  }
}

7. 编写防弹的代码

每个 if 语句都应有两个分支**,迫使自己考虑所有情况。不要省略 else 分支并依赖“fall-through”控制流——这会创建难以验证正确的 spaghetti logic。显式处理每个可能的结果。


8. 正确处理错误


9. 正确处理空指针


10. 防止过度工程

过度工程的迹象:

他的原则:

他区分了“无明显 bug 的代码”(复杂代码 + 很多 tests)和“明显无 bug 的代码”(简单、直接的代码),并倡导后者。


参考:


Back Donate