解锁编程智慧 | AI生成和翻译

Home 2026.03

问题:Wang Yin 的文章《编程的智慧》(The Wisdom of Programming),位于 GitHub 链接 https://github.com/AlexiaChen/YinWangBak/blob/master/编程的智慧.md 中,内容是什么?

答案:

概述

这个文件是 GitHub 仓库 YinWangBak 的一部分,该仓库收集了 Wang Yin (王垠) ——一位著名且有影响力的(尽管有争议的)中国计算机科学家的文章。这篇文章标题为 “编程的智慧” (The Wisdom of Programming),最初发布在他的博客上。下面是其内容的全面总结。


引言

编程被描述为一种创造性活动和艺术形式。掌握任何艺术都需要大量练习和洞见。标题中提到的“智慧”并不是奇迹般的捷径——它无法取代努力工作。然而,由于软件行业倾向于将简单的事情复杂化,本文旨在为困惑的人们指明正确方向,让他们少走弯路,少浪费精力。


1. 反复打磨你的代码

有些人吹嘘自己写了多少千行代码,仿佛数量就是编程技能的衡量标准。然而,如果你总是急于写代码,而不回去审视、修改和打磨它,你就无法真正进步。你会继续产生平庸甚至糟糕的代码。在这个意义上,许多人所谓的“工作经验”并不一定与代码质量相关。

优秀程序员删除的代码比保留的更多。如果有人写了大量代码却很少删除任何代码,他们的代码库很可能充满了垃圾。

如果你达到了一个平台期,打磨不再带来进步,就把代码搁置一边。几周或几个月后回来——往往会有新的灵感。经过许多这样的循环,你会积累智慧和直觉,从而更直接、更正确地处理新问题。


2. 编写优雅的代码

人们讨厌“spaghetti code”,因为它纠缠逻辑,让人无法跟随。相反,优雅的代码看起来像整齐堆叠、嵌套的盒子——有组织且层次分明。就像整理房间:不要把所有东西扔进一个大抽屉,而是用里面的小盒子来分类物品。

优雅的代码也具有树状结构。程序主要处理信息传递和分支。把代码想象成电路——电流通过导线,在节点处分流。这种思维方式会导致 if 语句几乎总是有两个分支(一个 if 和一个 else),从而创建清晰且严密的逻辑。


3. 编写模块化的代码

真正的模块化不是将代码分散到许多文件和目录中——那只是表面上的,往往适得其反。真正的模块化是逻辑上的。一个模块应该像电路芯片一样,具有明确定义的输入和输出。已存在的最好的模块化工具就是简单的 function:每个 function 有明确的输入(参数)和输出(返回值)。

模块化代码的关键原则:


4. 编写可读的代码

真正优雅且可读的代码几乎不需要注释。如果你发现自己需要写很多注释,那很可能意味着你的代码逻辑不清晰。编程语言实际上比自然语言更强大、更精确——它们包含名词、动词、条件等等价物。如果你充分利用语言的表达能力,代码本身就会解释它在做什么。

可读代码的具体提示:


5. 编写简单代码(避免过度工程)

本文警告不必要的复杂性:


6. 正确处理错误

本文深入讨论了正确的错误处理。错误处理并非 Java 独有——即使在 C 中,也存在相同的基本问题,没有语言能让你逃避它。你必须理解 exceptions 的含义并正确处理它们,而不是盲目捕获所有 exceptions 或到处添加 throws Exception


7. 避免 Null 并使用安全的替代方案

本文强烈批评将 null 用作返回值,称其是许多 bug 的根源。它推荐使用像 Optional 这样的构造(尽管也批评了 Java 8 冗长的实现)或其他安全的模式,这些模式使值的缺失显式化,并强制调用者处理它。


总体哲学

本文呈现了通过实践获得的编程知识和技术。它强调程序员应该知道每个阶段该做什么——以及不该做什么。这些不仅仅是个人偏好,而是良好编码的广泛共享原则。核心信息是:质量胜于数量,清晰胜于巧妙,不断打磨胜于仓促生产。


参考文献:


Back Donate