关于命名,我有无数的例子想举,但时间有限,先举一例。以后要是得闲,再举一些。其实在《管道时代》一文中我已经举了 n_distinct 的例子了,它跟我下面要说的例子有非常类似的问题(单字一个 n 意义太模糊)。
COS 急先锋大为同志日前上传了一个统计之都微信二维码的图片,路径和文件名为 2017/01/qrcode.png。我看了给改了一下。
我在《域名起名服务》中提过计算机界的那句经典名言:计算机科学里有两大顶级难事,一是变量命名,二是刷新缓存(以后有机会我也想说一下这个缓存刷新问题为什么难)。我觉得多数人对命名这件事的做法可以用这句话概括:
只是欢喜随意而至
因为随意,所以什么方便、或者什么是第一个映入脑海的名称,就直接用了。大为用这个路径的原因是以前我们还在 WordPress 时代的时候,这个二维码图片通过网页界面上传在一个年月文件夹下,当然其文件名更加奇葩,我不知道是谁干的,但从这个意义上来说,大为的命名已经前进一大步了。一般情况下我的 GIT 消息都会比较详细,我重命名为 images/wechat-qrcode.png 的时候写了:
重命名,原因有二:一、该文件为通用类型文件,无须放在年月文件夹下;二、qrcode.png 名称太模糊,应该体现“微信”二维码
这样将来要是想在什么别的地方引用这个图片,我不到网站上去找大概也能记起来它的地址是 https://uploads.cosx.org/images/wechat-qrcode.png。这个路径基本上可以靠文字翻译过来:在 COS 网站的上传站点中的图片文件夹下,找一个微信二维码图片。关键词:COS、上传、图片文件夹、微信、二维、码、图片。如果用 2017/01/qrcode.png,可以想象将来会有几个问题:一是需要回忆更多细节:我是放在哪年哪月文件夹下?某年某月后面有没有跟着某日?二是如果有一个新的二维码(比如支付宝)需要上传,我该如何给它命名?因为前面有 qrcode.png 站在道上了,我是用 qrcode2.png 还是 alipay-qrcode.png?如果用了前者,等到回忆的时候又要想,因为支付宝是 qrcode2,微信二维码是不是 qrcode1?如果用了后者,就会想微信那个是不是 wechat-qrcode?从此就混乱了。
火影中我最喜欢的一个角色应该是云隐村的重(这种只有一个单字的名字好别扭啊),他那脑洞大开登峰造极的杞人忧天碎碎念非常有趣。上面这一段也算是我的杞人忧天。一个文件没有命名好,仿佛会导致时钟失灵山体滑坡火车出轨飞机坠毁地球爆炸宇宙毁灭。
变量、函数、参数命名都是一个道理。要是图一时之方便,不考虑未来、他人、撞名的可能性,变量一律用 x/y/z,函数一律用 f。过一阵子再来看,星星咋不像那颗星星哟, 月亮也不像那个月亮,河也不是那条河哟, 房也不是那座房。
面前摆着一堆代码,红红火火恍恍惚惚。
赞赏
作为一名没有固定工作的自由职业者,我非常感谢您通过捐赠的方式来支持我的写作和开源软件开发。当然,捐赠纯属自愿。无论金额多少,都是一片诚挚的心意。支付方式如下:
| 微信 | ← 奋力支开它俩 → | 支付宝 |
|---|---|---|
![]() |
其它爱心通道 ↓ Venmo: @yihui_xie Zelle: xie@yihui.name PayPal: xie@yihui.name |
![]() |
若使用 Venmo/Zelle/Paypal,请添加备注“gift”或“donation”,以免捐赠被视为我的可税收入。若使用 Paypal,支付类型请选 Family and Friends,而不要选 Goods and Services。
在不影响生活的前提下,我会将收到的捐赠以尽量大的比例回馈给开源社区和慈善机构。作为参考,2024-25 年间我共收到约三万美元捐赠,完税后我转手捐出了一万五千美元。

