数优编码 All articles
编码原理

变量名敢用中文?我在一个混合团队里实测了一整年

数优编码
变量名敢用中文?我在一个混合团队里实测了一整年

Photo: Joonspoon, CC BY-SA 4.0, via Wikimedia Commons

去年接手一个内部工具项目时,我做了个大胆的决定:允许——甚至鼓励——团队成员用中文写变量名和函数名。一年过去了,代码库活得好好的,我也有了不少想说的实话。

先说结论:没有想象中那么糟

很多人一听「中文变量名」,第一反应是「这不折腾吗」。但我们的场景比较特殊:团队里一半是刚转行三个月的新人,业务领域又是保险精算,一堆术语用英文翻译过来全是「premiumCalculation」这种谁也记不住的拼串。

改成 待缴保费、满期日 之后,新人上手速度肉眼可见地变快了。代码评审时,讨论业务逻辑的效率也高了——大家不用在「这个词到底指哪个概念」上反复确认。

IDE 支持比想象中好,但有暗坑

主流工具链的表现让我意外。IntelliJ 系、VS Code 对 Unicode 标识符的支持已经相当成熟:补全、重构、跳转定义全都正常工作。Git diff 和大多数 CI 日志也没问题。

但坑藏在细节里:

这些都是「能解决但烦人」级别的问题,不是拦路虎。

国际协作是真正的硬边界

必须坦白:如果团队里有不看中文的成员,中文标识符基本可以直接否决。我们后来和海外团队合作一个模块时,把那一层的命名全部换回了英文。这不是技术问题,是基本的尊重和可维护性问题。

所以我的建议变成了一条边界清晰的规则:领域层可以用中文,接口和公共层必须英文。类似很多团队「内部注释中文、对外文档英文」的分层做法。

什么时候值得试?

根据这一年的经验,我总结三个适合的场景:

  1. 术语翻译损耗大的领域:法律、医疗、金融,英文翻译经常丢失精确含义
  2. 以中文母语者为主的封闭团队:长期维护成本可控
  3. 教学和内部脚本:降低认知负担,收益明显

反过来,开源项目、跨时区协作、依赖老旧工具链的场景,就别折腾了。

写在最后

中文编程不是信仰之争,是工程权衡。标识符本质上是给人看的编码——既然我们花那么多精力搞定 UTF-8,让编译器正确处理中文又何尝不可?关键是想清楚你的团队、你的领域、你的工具链,然后划一条清晰的边界。

如果你也在犹豫,不妨先拿一个内部小工具试三个月。最坏的结果,也就是一次全局重命名而已。

All Articles

Related Articles

搜索召回率上不去?先看看你是不是把中文词切成了两半

搜索召回率上不去?先看看你是不是把中文词切成了两半

别再手动拼 URL 了:一次中文参数乱码背后的完整编码链路排查

别再手动拼 URL 了:一次中文参数乱码背后的完整编码链路排查

从「锟斤拷」到 Emoji 崩库:一场字符编码引发的血案复盘

从「锟斤拷」到 Emoji 崩库:一场字符编码引发的血案复盘