首发于开源中国——《开源项目必须用英文命名标识符吗?》
前几天在开源中国看到了几篇文章,其中又牵涉到了中英文命名标识符,于是结合之前的实践撰写了与《Gitee 开源指北》中 误区澄清部分 同名的 此篇博文,有幸获得编辑推荐,后引发颇多讨论。正文如下:
看到庄表伟的《开源社区应该选择什么语言?》一文,其中建议一刀切地使用英文命名标识符:
我们将一个源代码文件,看做一篇完整的文章。在这篇文章中:中英文夹杂,甚至英文加汉语拼音混杂都是严重影响阅读体验的
包命名、文件名、函数名、变量名等等,都严重建议一律使用英文
在源代码中,我的个人意见是尽量用源代码本身来说话,而无需注释。如果一定要加注释,也强烈建议使用简短英文说明
不得不来发表些个人观点。在《Gitee 开源指北》第 5 小节:有关开源的常见误区 中,有与本文同题的一节进行阐述。三个月前还围绕此部分进行了一场 持续数日、来回数十回合的论辩。有兴趣的可以细看,此文仅分享一个两年半前的开源合作实践经历。
那天在 v2ex 碰到一个开发请求,由此催生了 五笔编码编辑器 这个微型开源项目,此为 事后结贴。
九月十八日开始合作时,请求者 明说无编程经验。在原型搭建时,我提到会使用中文命名,最后实现的 Python 代码片段如下:
一开始很希望之后的维护由他多出力,但感觉那时他的动力并不大。花个把礼拜做出了雏形,意外和惊喜的是,这位在九月二十八日就提交了这个“照猫画虎” PR,并且之后持续改进,十月之后我除了合并 PR 之外基本没有投入其他精力。
可见中文命名对于鼓励新手参与开源项目的作用。
开源项目的基本架构搭建之后,如果项目本身使用的是中文命名,用户(往往非程序员)应该会更有动力去学习代码。并不是说英文命名肯定会阻止参与项目,但会让很大一部分人望而却步。
实际上开源项目很大一部分工作量在于后期维护、界面改进、相似功能的堆积,以及相关测试。这部分完全可以由原作者之外的参与者,即普通用户来实现,原作者就可以专心投入到架构/大功能的优化改进上。久而久之,编程新手也会逐渐成为熟练程序员、核心贡献者。
能够吸引更多人来投入项目,而不是点个星就走,是开源项目能够壮大和持久的关键。任何能够降低参与门槛的技术,都应该值得项目作者认真考察,根据项目酌情决定。
回忆一下,无论是开源还是闭源项目,过去几周有没有碰到如下情况之一:
- 翻自己之前写的代码,发现某个标识符不知所谓
- 看别人的代码,不懂某个标识符
- 同事来问你某个标识符啥意思
在我看来,这种时候就可以考虑一下,将这个标识符改成中文会不会少些麻烦。大可以从需要的地方开始改,不用上来就把整个项目的标识符全部中文化。
补:最常见的问题之一是:”用中文命名之后,国外开发者如何参与”? 对此在《Gitee 开源指北》中也有提及,可以另开文章详述。