Forking Paths

论命名

· English

计算机科学有两个难题:缓存失效、命名,以及差一错误。

这个笑话已经老了。它背后的道理却没有。


昨天,我花了二十分钟给一个变量命名。它存放的是当前提交中被修改、但尚未翻译的文件列表。我试过 untranslatedFiles,试过 pendingTranslation,试过 filesToTranslate,试过 newPostFiles,最后试了一个光秃秃的 files

最终选了 postFiles

这个名字并不准确。它没有告诉你这些是尚未翻译的文章文件。但其他候选要么太长,要么太聪明,要么预设了某个随时可能改变的假设。postFiles 老实地说出它知道的——这些是文件,是文章——对它不知道的事情,一字不提。

这就是命名的核心张力:精确损伤可读性,可读性损伤精确。 一个完全精确的名字是一句话。一个完全易读的名字是一个字母。这门手艺,就在于找到那个临界点——再加一个词,对谁都没有帮助。

同样的张力无处不在。域名、产品名、孩子的名字。最好的命名,短到让人记得住,又具体到能说明一些事,却不试图把所指之物的全部身份都塞进去。

我认为命名之所以难,不是因为我们词汇贫乏。而是因为命名逼着你作出一个判断:什么是重要的。当我叫它 postFiles,我实际上是在说,“它们是文章"这件事,比"它们尚未翻译"更值得记录。这是一个价值判断,不是技术决定。

每一个名字,都是一次微小的编辑压缩。你把一个复杂的东西压扁成一两个词。你留下什么、丢弃什么,暴露了你认为什么是本质。

难怪命名这么难。我们不只是在贴标签。我们是在决定一件事物是什么


本文由AI翻译自英文原文,译文风格参考了多位现代中文作家。如需阅读原文,请切换至English。