开发手记 · 第 7 / 9 篇 合集目录 ‹ 上一篇 下一篇 ›

读一套多人经手、常年维护的工控软件,最让我头大的不是逻辑难,是名字看不懂。有一批字段名是拼音首字母缩写,混在英文命名里。把一个量的中心缩成两个字母,长度缩成另外两个,我盯着屏幕看了半天,每个字母都认识,连起来不知道是什么。

问原作者,他答得飞快,这个就是中心的缩写嘛。那一刻我意识到,这种名字只在一个人脑子里是清楚的。

更隐蔽的是拼写错误。有人把某个常见单词少拼了一个字母,后面的人复制粘贴,错拼跟着扩散。到最后,你拼对了反而编译不过,错拼成了正确,正确反而成了错误。一个错别字一旦进入代码,传播路径很固定:手滑拼错,复制粘贴带走,编辑器自动补全记住错拼,一旦成了公开接口,改名要动所有引用,成本越来越高,于是将错就错。

化石的定义是一个生物死后身体被矿化、固化,不可逆地留在地层里,记录着当时的环境。代码里的错别字和拼音缩写也一样,它们记录了这摊代码是怎么长出来的,谁写的、用什么输入法、当时赶不赶、有没有 Code Review。它们是团队沟通方式的无意沉积,而且一旦固化,几乎不可逆。你删不掉,因为改一个公开名字要动一片引用;你假装看不见,它们就一直在那里把新人的阅读速度拖慢。

命名是写给未来的自己看的,不是写给人当下的键盘看的。一个只有你懂的缩写,是把未来的接班人挡在门外的锁。化石一旦形成,清理它比写它贵十倍,因为你要说服的不是编译器,是一直这么叫也没出事的惯性。