我开始在代码中使用中文变量名了

chunqiuyiyu 2026-07-09 12:10 1

有句名言说,计算机科学中只有两件难事:缓存失效和命名。


最近在开发一个文字游戏,有关汉字的描述特别多。如何在代码中为相关的变量起一个贴切、适合的名字简直要了老命。直接用汉语描述翻译成英文,不但很长,而且我也没有精力时间去判断生成的英文到底对不对,特别是是一些成语和俗语等根本没法翻译。


如果用拼音,问题更多了。用全称名字也很长,而且同音字这么多,一眼看到还得想到底是啥意思。用拼音简称那就加灾难了( nbnhhsh 能不能好好说话)。


最后,我终于决定使用中文变量名。一用才知道,真香!描述概念很贴切,真正做到了见名知意,写起代码来行云流水,连注释都不需要。


2025 年了,HTML5 以及很多编程语言对 Unicode 的支持已经相当完善,中文的变量名称一点儿都不会有问题。借助 AI 与编辑器,补全与跳转更是不在话下。


说到这里,诸位计算机大神要来喷我了,我试着反驳一下,如果你坚持,那就是你对。


问:用中文频繁切换输入法会让写代码更慢?


答:不会。首先我用系统自带输入法,用 shift 一键就能切换,按照代码规范,英文命名还要驼峰大小写。最关键是我不需想变量描述的英文表达,中文简单明了,实际上会更快。再说了,又不是打字员,快有啥用啊?


问:用中文导致编码问题?


答:代码经过打包工具转译后会成为 abcd 等字符,不会对运行造成影响。


问:协作问题?


答:这是个私人项目,不存在与他人协作,更不会和外国人协作。


问:用中文太低端了,英文名称更加上档次?


答:去看看脑子,用蹩脚和充满语法错误的英文才能让你获得自信,病得不轻。


就这些了,希望对大家有所启发。


case

最新回复 (97)
  • tf2 07-09 12:12
    1
    早就这么干了。产品喜欢创造发明,以前写代码老实翻译,后来悟道了

    翻译个屁。你原型画什么我 enum 就写什么数据库就存什么

    有变化?谁变谁背锅。
  • nicaiwss 07-09 12:13
    2
    挣钱不?海外市场不要了?
  • chunqiuyiyu 楼主 07-09 12:13
    3
    @tf2 是这样的,不要在一些无关紧要的地方浪费时间精力。
  • luojianxhlxt 07-09 12:13
    4
    @nicaiwss #2 中文代码不影响 i18n 的实现
  • chunqiuyiyu 楼主 07-09 12:14
    5
    @nicaiwss 代码又不会让人看到……
  • soouu 07-09 12:16
    6
    @nicaiwss 很难怀疑是不是反串
  • unused 07-09 12:21
    7
    痛点是输入太慢,主要卡在重码选字上。以后用 AI/语音输入无所谓了
  • chunqiuyiyu 楼主 07-09 12:22
    8
    @unused 现在都是 AI 在写了,我只看代码
  • catning 07-09 12:23
    9
  • chunqiuyiyu 楼主 07-09 12:26
    10
    @catning 看到 emoji 我就难受🤣
  • gpt5 07-09 12:32
    11
    我记得这是 v 站大忌 会被 v 友鄙视
  • starrys 07-09 12:33
    12
    楼主这种情况,个人项目、需要翻译很多名词为英文,确实用汉语是个好办法。
  • starrys 07-09 12:33
    13
    但是不具有普适性。
  • kuku123 07-09 12:34
    14
    快进到汉语一统天下
  • PrinceofInj 07-09 12:44
    15
    小企鹅输入法当年仅仅因为使用中文配置,就被一些高手骂得停止开发,现在真是不可同日而语了。
  • chunqiuyiyu 楼主 07-09 12:49
    16
    @gpt5 无所谓了,我经常分享写的东西,被骂习惯了,以前还和人对喷,现在看到后一笑而过。
  • chunqiuyiyu 楼主 07-09 12:50
    17
    @starrys 对,选择自己适合的。
  • chunqiuyiyu 楼主 07-09 12:54
    18
    @kuku123 别这样,我害怕。
  • chunqiuyiyu 楼主 07-09 12:54
    19
    @PrinceofInj 唉,人心中的偏见是一座大山。
  • Fallever 07-09 12:58
    20
    上次遇到中文变量名用 gbk 保存的, 导入到工程里 vscode 打开直接编译报错 🤣
  • semiboldhung 07-09 13:03
    21
    叽里咕噜说什么呢。还不是因为英语菜吗😂有这时间在这扯淡,搞一些赛博嘉豪发言,不如老实去学英语。真招笑。。
  • paopjian 07-09 13:06
    22
    @livid semiboldhung 人身攻击, 不清楚是不是反串
  • chunqiuyiyu 楼主 07-09 13:11
    23
    @Fallever 不是都应该保存成 UTF-8 吗? GBK 那就可怕了。
  • chunqiuyiyu 楼主 07-09 13:12
    24
    @paopjian 各人有各人的想法……
  • passive 07-09 13:21
    25
    中文从编码上不太适合。

    橘子可以写成桔子。同一个字有简体、繁体、kanji ,字形看上去都差不多。

    最不能忍的是对 vim 光标跳跃不友好
  • chunqiuyiyu 楼主 07-09 13:26
    26
    @passive 不是全部替换,就在需要以及适合的地方用中文变量。
  • semiboldhung 07-09 13:33
    27
    @paopjian ニゴジョニマネ、シャビワンイ
  • loading 07-09 13:37
    28
    你再怎么写,也是一句话让 ai 给我翻译过来。
  • Vegetable 07-09 13:40
    29
    说个更实际的,AI 也会生成带中文的变量名了,部分 AI 是清楚“如果不知道怎么翻译,就直接用中文”的。

    我一直是中文变量名的坚定支持者,并自动降低对无脑反对者的认知评价。
  • edward1987 07-09 13:52
    30
    我是很多 enmu 类型都用中文了,用英文然后又映射一步 简直多此一举
  • chunqiuyiyu 楼主 07-09 13:56
    31
    @Vegetable
    @edward1987

    对啊,在脑子里面把英文转成中文来理解意思,然后再翻成英文写到代码里,浪费时间精力。见名知意不好吗?有些人上来就无脑喷,搞不懂。
  • watercube 07-09 13:56
    32
    我觉得能跑就行能维护好就行,没有非要英文才高大上
  • yakun4566 07-09 14:12
    33
    有意思,之前考虑过,不过现在只是在代码分支上用中文命名(不得不说效率很高,比日期、版本好、英文,好理解的多)
  • chunqiuyiyu 楼主 07-09 14:20
    34
    @yakun4566 不错,学到了👏
  • duuu 07-09 14:21
    35
    我认为有不用中文变量有两点,一个是以前有编码问题,第二是变量名用了中文,但是代码里很多关键词,没法用中文,混用的情况下会有心智负担。现在其实就是在混用和不好翻译/很长的英文,之间取舍。哪个好一点用哪个,实事求是,写代码写出优越感谁才是真的赛博嘉豪?
  • zyx331004 07-09 14:21
    36
    私人项目本来就随便你写,不知道有什么好发帖的。
  • noahjsn 07-09 14:24
    37
    各种乱码、编译报错,就老实了
  • chunqiuyiyu 楼主 07-09 14:26
    38
    @zyx331004 想法分享出来,和大家讨论学习啊,比如上面老哥说的中文分支,我就学到了。
  • Felldeadbird 07-09 14:43
    39
    特定项目用中文没问题。但是团队项目下,避免中文不是什么高大上,是环境的稳定性。

    最近我同事提交的代码,注释写的中文就是乱码。当然了,我们没有统一的开发配置,所以大家各自用编辑器,也难免会出现乱码的问题。

    现在用什么都可以,在 AI 面前感觉代码的语法都不是很重要了。
  • wuxinling 07-09 14:47
    40
    有个问题啊,你用中文变量要频繁切换输入法啊,如果你电脑上再有点其他语种的输入法会非常难受。不过我支持中文变量,那些财务相关术语的英文真的是一个看不懂,还容易混淆。
  • leaveeel 07-09 15:10
    41
    const 对象 = {"姓名": ""}
    实际输入是
    const[enter] duixiang/dx = {[shift]"[shift]xingming/xm"[shift]: ""}

    对比全英文
    const obj = {name: ""}
  • chunqiuyiyu 楼主 07-09 15:14
    42
    @leaveeel 如果是 name 这种简单易懂的变量,我直接用英文表达,实在很难翻译的才会换成中文。而且现在都是 AI 来写了。
  • chunqiuyiyu 楼主 07-09 15:15
    43
    @Felldeadbird 团队还是定好规范,大家遵守协作。
  • aduangduang 07-09 15:22
    44
    你开心就好😄
  • zsc8917zsc 07-09 15:30
    45
    这种有没有可能对 AI 编程不友好呢? AI 貌似会把中文输入翻译成英文作为 prompt....
  • aogu555 07-09 15:30
    46
    看过一些 toG 项目,充斥着大量拼音首字母缩写,随手复制几个( sbbh 、yxmc 、klmc ),这种强行使用英文变量的还不如推行中文变量。
  • miku999 07-09 15:34
    47
    埋点的场景非常好用

    const map = {
    XX 曝光: '233',
    XX 点击: '2333',
    }

    report('XX 曝光')

    搞不懂之前写代码的人非要把中文转成 UPPER_SNAKE_CASE, 用的单词也很奇怪, 只能靠 ID 去对应平台里的名字
  • chunqiuyiyu 楼主 07-09 15:42
    48
    @zsc8917zsc 我用的提示词就是:实现某某功能,变量无法用确定的英文翻译就用中文表达,注意简洁明了。没感觉有啥问题。
  • RayJiang9 07-09 16:07
    49


    在 enum 的里用中文命名太合适了,一目了然。
    再加上 swift 可以直接用 . 弹出智能提示,不用切输入法,不用输中文。
  • Danswerme 07-09 16:13
    50
    @semiboldhung 请问楼主的“赛博嘉豪”具体体现在那句话呢?
  • zsc8917zsc 07-09 16:17
    51
    @chunqiuyiyu #48 嗯,我的意思是不知道 AI 把代码作为上下文的时候,会不会翻译中文变量~ 翻译来翻译去的会不会就产生幻觉了
  • woodfizky 07-09 16:27
    52
    @wuxinling #40
    他只是写 Enum 类,这个可以把类名按照原来英文的方式写,比如游戏状态改为 game_status,然后里面的枚举名还是中文,这样用 IDE 的话,打个 game_status. IDE 就自动帮你把选项带出来了。
    可以参考#49

    不过枚举的成员多起来还是会烦。
  • lisxour 07-09 16:32
    53
    @semiboldhung #21 菜?没见过世面说别人豪,我这只是几百个名字中的几粒尘,你试下用英文或者拼音,你牛你来🤓

  • semiboldhung 07-09 16:43
    54
    @lisxour 你司代码都没 code review 了还在这里叫啥呢我请问呢?已经是屎山了你用火星文也没人管你呀😂

    你这些行业专有名称,怎么,难道只有中文环境才有吗,完全可以制定文档做一个中英 mapping 。明明是专业知识储备不足,还好意思出来跳脚🤣

    小作坊小牛马闹麻了,不想和你们这些认为代码中可以用非英文单词来写的人有任何的后续讨论。勿扰🥱
  • furlxy 07-09 16:48
    55
    除了打字慢没什么不好的,最后都得编译 js,谁能看得懂
    而且我不懂你们说的正规,标准是什么?一个信达雅的变量名就是正规,那两个汉字能解决这是什么的命名就是不正规么
  • chunqiuyiyu 楼主 07-09 16:50
    56
    @furlxy 有些人的成见太深了……
  • kapr1k0rn 07-09 16:51
    57
    10 年前就这么搞了,连数据表名和字段名都取中文,因为专业词汇没法取英文名字
  • lisxour 07-09 16:52
    58
    @semiboldhung #54 喷你都浪费我的币,自有人叼你。🤡
  • Razio 07-09 16:54
    59
    @lisxour #53 笑死了,喜欢英文的“知识分子” 破防了怕是,赛博优越感
  • Razio 07-09 16:55
    60
    @semiboldhung #21 赛博优越感
  • RobinzzZ 07-09 16:55
    61
    写代码的时候要打点的时候要切英文吗?
  • aker91 07-09 16:57
    62
    用中文做变量名以前有输入效率问题,在全 AI 后实际是很好的实践,code review 也容易一些,至于说不如多学学英文的,你只要英文达不到母语水平,阅读效率是绝对不如中文的
  • shine1996 07-09 16:57
    63
    关键是来回切输入法也太麻烦了
  • ufan0 07-09 16:58
    64
    楼里这有什么值得争的,永远记住“没有最好的,只有更合适的”!

    还有喷什么小作坊的,又让我想起了某大厂接我们项目的时候:
    - 上来就是三中台!是的,不是双是三!
    - 上来就是 DDD 和六边形架构,ma'ye !一共就 1500 行代码的脚本项目搞成了 7000 多行。
  • GeminiPro 07-09 17:03
    65
    真代码即注释。
  • flytsuki 07-09 17:05
    66
    早就在用中文写枚举了,英文太难翻了
  • curiousjude 07-09 17:27
    67
    想起若干年前自己发起的讨论[大家在什么情况下会用拼音命名变量什么的?]( https://v2ex.com/t/140197#reply52)...

    我非常赞同 OP 的观点,尤其是偏业务的命名,用中文一目了然。不过目前我还是克制地使用,仅在常量命名里会带上中文(比如 taskType 搭讪 N 个用户)。我不是很理解完全反对中文的人,实际使用并不会有什么问题,而且表达力非常好。至于说叫人多学英文的,英文再厉害,又有多少人能达到 Native Speaker 的水平,就算你达到了,和你一起工作的呢?你写的代码其他人不读?
  • dcdlove 07-09 17:30
    68
    这贴是英语差生加编程差生的聚集地吧
  • lvcp 07-09 17:35
    69
    #54 喷完别人说,勿扰,你也是闹麻了 哈哈,高级知识分子
  • chunqiuyiyu 楼主 07-09 17:36
    70
    @dcdlove 你的表情为啥这么大🤣
  • chunqiuyiyu 楼主 07-09 17:40
    71
    @curiousjude 对,我这个图没贴好,有些情况在变量名上用中文真的好,见名知意。我见过各种瞎翻译的,狗屁不通的英语,还要在旁边特别注释一下。尤其现在 AI 全面接管的时代,都不用操心切换输入法的麻烦了。
  • 0x663 07-09 17:55
    72
    楼主还在古法编程,还是说让 AI 生成中文变量名/方法名
  • chunqiuyiyu 楼主 07-09 17:57
    73
    @0x663 AI 生成中文变量名
  • xuejianxianzun 07-09 18:12
    74
    怎么还有嘲讽英语水平的,让你优越上了
  • Sezxy 07-09 18:21
    75
    英文好=人上人
  • chunqiuyiyu 楼主 07-09 18:26
    76
    @xuejianxianzun
    @Sezxy

    搞不懂,一门用来交流的工具而已
  • ryougifujino 07-09 18:32
    77
    不知道会不会对 AI 不友好,毕竟 AI 训练用的代码都是英文的,而且缓存命中率会不会下降
  • hotea 07-09 18:37
    78
    AI 时代,大家逐渐不读代码,这种写法应该慢慢是可接受的了
  • OnceUponATime 07-09 19:36
    79
    我个人觉得英语表意更清晰(虽然我英语水平也一般),通常能看出名词、动词的区别(比如“modification”和"modify"),但翻译成中文后都是“调整”。不过这只是个人偏好的问题,没有对错。
  • kakki 07-09 19:47
    80
    领域词汇用中文完全没毛病,而且应该推广.
  • letking 07-09 20:18
    81
    卧槽还真行啊,试了下 python 也能用中文,牛逼
  • chunqiuyiyu 楼主 07-09 20:36
    82
    @letking 早就能用了,很多编程语言都支持
  • hyfc 07-09 20:36
    83
    在 for if else return 也能写成中文之前,我不打算这样做。
  • Overfill3641 07-09 21:18
    84
    如果支持 UTF-8 BOM 就用 BOM ,有些中文在 UTF-8 下容易乱码( ANSI UTF-8 自动识别问题),BOM 就强制 UTF-8 保存读取。
  • Greatshu 07-09 22:01
    85
    支持,很多专业名词别说英文,中午都看不懂,要不就是巨长,翻译成英文能占半个屏幕,这时候还用英语纯粹搞行为艺术
  • kkwa56188 07-09 22:09
    86
    直接 block 了, 我反正是少了一个信息污染, 最近在做不内耗训练.
    各位随意.
  • AItsuki 07-09 22:15
    87
    我觉得枚举中的名字和值用中文还行,变量和类名使用中文某种程度上其实比英文更难。就比如复数时态这些,中文需要打更多的字,再者英文可以缩写。
    比如“游戏状态”看到的第一眼真不知道是个枚举,这种时候用全大写的 GAME_STATUS 反而更清晰。
  • bowencool 07-09 22:18
    88
    @Razio #60 所以你英语水平怎么样?
  • AItsuki 07-09 22:20
    89
    不排斥,但是例子属于是过犹不及...
  • nzynzynzy 07-09 23:11
    90
    @lisxour #53

    你这才练到第几层啊就累了

    https://imgur.com/xPQYytH
  • nzynzynzy 07-09 23:13
    91
    @lisxour #53

    图没贴上我再试一下
    https://imgur.com/xPQYytH.png
  • nevin47 07-10 09:07
    92
    第一反应是好像 OP 说的还有点道理

    但是看了几楼之后,我感觉我自己开发的话我会用一个 Language Mapping 去做映射,程序逻辑和文本做分离,这样未来不管是改描述还是做多语言,都有更好的灵活性
  • micean 07-10 09:17
    93
    @nzynzynzy 你这属于行业内国际标准化了的,完全不是一回事
  • lululau 07-10 09:25
    94
    曾经中文编程最大的问题是码字效率,vibe coding 时代这个问题不存在了;相反中文易于中文母语者理解,确实是个好路子👍
  • JerryZhi 07-10 09:37
    95
    语言的文档说了支持中文那就是可以用,真出问题了去提 issue ,谁让他承诺支持 Unicode 的
  • nanpu 07-10 09:50
    96
    @nicaiwss 代码中文和海外市场有什么关系
  • chunqiuyiyu 楼主 07-10 09:54
    97
    @AItsuki 这个图没有贴好,我其实想表达的是难翻译的变量用中文表达。
* 帖子来源V2EX
返回