chunqiuyiyu
V2EX  ›  编程

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

  •  1
     
  •   chunqiuyiyu · 13h 45m ago · 5445 views

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

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

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

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

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

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

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

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

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

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

    问:协作问题?

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

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

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

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

    case

    91 replies    2026-07-09 23:13:44 +08:00
    tf2
        1
    tf2  
       13h 43m ago   ❤️ 9
    早就这么干了。产品喜欢创造发明,以前写代码老实翻译,后来悟道了

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

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

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

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

    我一直是中文变量名的坚定支持者,并自动降低对无脑反对者的认知评价。
    edward1987
        30
    edward1987  
       12h 4m ago   ❤️ 1
    我是很多 enmu 类型都用中文了,用英文然后又映射一步 简直多此一举
    chunqiuyiyu
        31
    chunqiuyiyu  
    OP
       11h 59m ago
    @Vegetable
    @edward1987

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

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

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

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

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

    report('XX 曝光')

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


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

    不过枚举的成员多起来还是会烦。
    lisxour
        53
    lisxour  
       9h 24m ago   ❤️ 5
    @semiboldhung #21 菜?没见过世面说别人豪,我这只是几百个名字中的几粒尘,你试下用英文或者拼音,你牛你来🤓

    semiboldhung
        54
    semiboldhung  
       9h 12m ago via Android
    @lisxour 你司代码都没 code review 了还在这里叫啥呢我请问呢?已经是屎山了你用火星文也没人管你呀😂

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

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

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

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

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

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

    https://imgur.com/xPQYytH
    nzynzynzy
        91
    nzynzynzy  
       2h 42m ago
    @lisxour #53

    图没贴上我再试一下
    https://imgur.com/xPQYytH.png
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1175 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 147ms · UTC 17:56 · PVG 01:56 · LAX 10:56 · JFK 13:56
    ♥ Do have faith in what you're doing.