• 请不要在回答技术问题时复制粘贴 AI 生成的内容
FakeLeung
V2EX  ›  程序员

大家对于中文变量名是如何看待的?

  FakeLeung · Nov 1, 2019 · 33922 views
  •   The specified image does not exist
    This topic created in 2474 days ago, the information mentioned may be changed or developed.

    恕我愚昧,实在是不想翻译各种奇怪的名称了,直接用中文当作变量名简洁明了(对于我来说)

    不知道大家如何看待中文变量名的?

    317 replies    2019-12-17 14:53:19 +08:00
    1  2  3  4  
    xavierniu
        1
    xavierniu  
       Nov 1, 2019 via iPhone   ❤️ 47
    你别说 这个代码格式配合中文变量名 还挺好看…
    jipaidian
        2
    jipaidian  
       Nov 1, 2019   ❤️ 1
    适合自己的就是最好的
    QingXuJiaZhi
        3
    QingXuJiaZhi  
       Nov 1, 2019 via iPad   ❤️ 21
    讲道理,非面向国际的开源项目,用中文利大于弊。不过很多人会有民族自卑感。
    7sj525bL0Wy7FOx9
        4
    7sj525bL0Wy7FOx9  
       Nov 1, 2019
    求配色
    viko16
        5
    viko16  
       Nov 1, 2019 via Android   ❤️ 7
    我觉得这种场景中就挺好的,想英文名反而难理解
    blankme
        6
    blankme  
       Nov 1, 2019 via Android   ❤️ 6
    还不如用拼音呢,用中文切输入法得累死。。。
    lxk11153
        7
    lxk11153  
       Nov 1, 2019   ❤️ 1
    没什么问题呀,比拼音首字母好多了
    binbinyouliiii
        8
    binbinyouliiii  
       Nov 1, 2019
    不遇到还好,遇到编码问题就麻烦了
    xctcc
        9
    xctcc  
       Nov 1, 2019   ❤️ 2
    你这个用中文确实好理解
    z1s23
        10
    z1s23  
       Nov 1, 2019 via iPhone   ❤️ 2
    你这个确实难翻译,还别说,这样看去还挺工整,哈哈
    secondwtq
        11
    secondwtq  
       Nov 1, 2019   ❤️ 1
    居然没人 @辣个蓝人
    taogen
        12
    taogen  
       Nov 1, 2019   ❤️ 1
    还是按照规范来吧,变量名用英文。

    你用中文,我用英文,他用日文。。。不乱套了吗?

    某些场合可能不支持中文,或者需要配置才支持中文,如 vim,server terminal 等,可能导致乱码,或抛出异常。

    建议读一下《 clean code 》
    jin7
        13
    jin7  
       Nov 1, 2019
    看上去还不错
    弄了个 中-->英 变量命名脚本
    https://getquicker.net/Sharedaction?code=3682097b-a5cb-4293-67a2-08d71837d942
    greatdancing
        14
    greatdancing  
       Nov 1, 2019 via Android   ❤️ 1
    中英文切换累死人
    fhsan
        15
    fhsan  
       Nov 1, 2019   ❤️ 3
    没问题,只要清晰好维护就行。
    JsonLee
        16
    JsonLee  
       Nov 1, 2019 via iPhone
    若非不是全中文,中英混合切输入法都累死;如果是全中文,真的要敲多好多次键盘。
    xkzhangsan
        17
    xkzhangsan  
       Nov 1, 2019
    有可能会出现编码问题,比如乱码。
    controller
        18
    controller  
       Nov 1, 2019 via Android
    写起来不方便,且,可能会有莫名其妙的错误,为避免踩坑,不推荐。。
    ayase252
        19
    ayase252  
       Nov 1, 2019
    自动补全什么的可以识别吗?
    Jirajine
        20
    Jirajine  
       Nov 1, 2019 via Android
    这种情况没问题,用中文对中文母语者来说可读性很高。
    但一般情况,除了国际化,编码之外,用中文最大的问题是不好输入。
    只要不用拼音和一些特别奇葩的缩写就好。
    nemo95
        21
    nemo95  
       Nov 1, 2019 via Android
    这来回切输入法不是要疯了
    linvaux
        22
    linvaux  
       Nov 1, 2019
    打!往死里打!
    QingXuJiaZhi
        23
    QingXuJiaZhi  
       Nov 1, 2019 via iPad   ❤️ 11
    切换中英文是按一下 shift

    而英文切换大小写是按一下 caplock 或按住 shift

    如果上面这些中文改成英文,必然中间会需要转换大小写或增加下划线

    结论是,中文变量名并没有增加按键次数。
    ksedz
        24
    ksedz  
       Nov 1, 2019   ❤️ 1
    可读性真不错,有些比较专业的词与其看那些蹩脚的英语,不如中文变量
    essicaj
        25
    essicaj  
    PRO
       Nov 1, 2019
    这种情况如果用英文或者拼音,多多少少都要配上个注释才好读懂。加上注释的话,一旦发生变更,变量名一改注释也得跟着改。再加上注释会增大代码的行数,怎么都没有直接用中文的简洁。只是不知道 ide 对中文的支持到什么程度,包括像拼写错误提示、重构、输入提示可能都会失效
    miaomiao888
        26
    miaomiao888  
       Nov 1, 2019
    可以,相当简洁明了
    shily
        27
    shily  
       Nov 1, 2019 via Android
    @linvaux 不是拉出去弹死?
    FakeLeung
        28
    FakeLeung  
    OP
       Nov 1, 2019
    @binbinyouliiii #8
    我是看过了,webpack 打包后,不会有中文的,全部变成了 abcd。
    FakeLeung
        29
    FakeLeung  
    OP
       Nov 1, 2019
    @niuxuewei #1
    @LionXen #4

    vscode 的 palenight theme.
    FakeLeung
        30
    FakeLeung  
    OP
       Nov 1, 2019   ❤️ 4
    @ayase252 #19
    有的

    FakeLeung
        31
    FakeLeung  
    OP
       Nov 1, 2019   ❤️ 1
    @nemo95 #21
    @blankme #6
    其实切换也就按 caps 一下而已,比 shift+-要快多了。
    shiji
        32
    shiji  
       Nov 1, 2019   ❤️ 1
    我觉得你这种情况用中文变量名非常合适。
    loading
        33
    loading  
       Nov 1, 2019 via Android
    知足吧,你还没见过拼音,不对,拼音首字母的。
    robinchina
        34
    robinchina  
       Nov 1, 2019   ❤️ 10
    挺好的。恕我直言,有多少程序是面向国际的?
    blankme
        35
    blankme  
       Nov 1, 2019 via Android
    @FakeLeung
    混编的时候需要时刻注意输入法状态,不然会出现各种状况,比如移动光时标输入法出中文,标点全角半角错误。

    用 markdown 写文字的时候这种情况最明显,不胜其烦。

    当然可能用的输入法不同,所以体验有差异。
    secsilm
        36
    secsilm  
       Nov 1, 2019 via Android
    能行,有时候遇到实在不好翻译的时候我就用拼音
    maomaomao001
        37
    maomaomao001  
       Nov 1, 2019
    就算不知道,你谷歌翻译都行写个英文,实在不行,写拼音都比这个强,
    你这个完全吧 ide 的自动补全都稿废了,而且还要切换
    chendy
        38
    chendy  
       Nov 1, 2019
    拼音就够用了
    输入中文要切换输入法 /切换中英文,提示虽然有但是有点残
    比如 应收工程款,用拼音的话,打 yS 基本就出来了
    FakeLeung
        39
    FakeLeung  
    OP
       Nov 1, 2019   ❤️ 1
    @maomaomao001 #37
    vscode 其实能识别的。
    mamahaha
        40
    mamahaha  
       Nov 1, 2019
    你这个函数也太大了吧,段落倒是挺工整的,这个风格也太让人无语了。
    AV1
        41
    AV1  
       Nov 1, 2019   ❤️ 1
    这是 JavaScript 吧,那就没问题了,不用在意上面那些“编码问题”,反正打包之后一个样。
    FakeLeung
        42
    FakeLeung  
    OP
       Nov 1, 2019
    @mamahaha #40
    没办法啊,要计算的东西真的有这么多,这还是只有 2 处地方用到。。。
    Jirajine
        43
    Jirajine  
       Nov 1, 2019 via Android   ❤️ 1
    @blankme 我用的 rime,一般这种情况可以直接强制全局英文标点,但快捷键有些还会有问题。
    现代工具对 Unicode 支持性以及相当良好了,混编最大的问题还是输入不便。
    还是那句话,用中文虽然糟糕,但也绝对比拼音和奇葩缩写高到不知哪里去了。
    loqixh
        44
    loqixh  
       Nov 1, 2019   ❤️ 2
    中文变量名信息量比英文大得多, 可以免除绝大部分注释和文档, 那些说切换麻烦的怕不是现在输入法, 不能设置中文状态输入英文标点
    FakeLeung
        45
    FakeLeung  
    OP
       Nov 2, 2019
    @DOLLOR #41
    是的,其实我特意看过打包后的代码,因为这些都是局部变量,所以可以被混淆,如果是作为对象的 key 就无法被混淆,就可能出现问题。
    secondwtq
        46
    secondwtq  
       Nov 2, 2019   ❤️ 1
    王垠前两天发了两条微博,大谈特谈”汉字拉丁化“的问题,认为非拼音文字都是”落后“的东西,并且顺便扣了很多帽子。

    我的观点:一,王垠在 PL 之外的言论还是随便看看随便笑笑;二,开微博对于王垠来说也是错误的选择

    不过换到楼主的问题,汉语没有一个易认的 Romanization 表示,确实导致不得不面对这种囧境,这大概是王垠的观点唯一站得住脚的场景
    要做的话技术上也有难度 ... 因为亲身体验是,不仅对付输入法麻烦,就算是一段话里面频繁出现 Diacritical mark 也很麻烦 ... 更扯淡的是,三个桌面系统的中文输入法都差不多,但是输入 diacritical mark 的方式都不一样
    gavindexu
        47
    gavindexu  
       Nov 2, 2019 via iPhone
    命名时就是 this 和 last 的关系……
    这个变量不难命名啊
    McContax
        48
    McContax  
       Nov 2, 2019 via iPhone   ❤️ 1
    习惯英文命名每次变量名都会花很多时间去构思,不用赶进度还好,赶进度就很 jb 烦,命名这种没有标准答案,不要用 123 abc 这种草草应对的变量名就好,避免踩坑最好确认用的编程语言对中文的支持程度

    @secondwtq 这个人我也没怎么关注过,但是非拼音文字落后这种说法实在不能苟同,中文是世界上少有的 speaking system 和 writing system 分离的语言,就上手而言绝对比英文和法语之类的难,英文是能说就能写,但是中文需要额外支配资源来建立读音和图像的连结,这也是很多国人学英文单词总拼错的原因之一,这也是为什么很多外国电视台和视频不提供 subtitle 的原因,因为英语中你听到了你就知道了,而中文模式下的理解你需要听到再加上看到才能理解(用数据库的说法来解释就是在 select 的时候 when 语句要带两个条件,才能匹配出唯一值,只带读音或者图像其中一个只能匹配同音字或者同字不同音),但是这并不是说中文就是落后的就是过时的,正如游戏一样,越是复杂的游戏游玩系统在上手之后的可玩性就会越强,中文学习只要能跨过那段艰难的学习期其实一切都还是挺光明的。
    anguiao
        49
    anguiao  
       Nov 2, 2019 via Android
    我觉得没什么问题,只要看起来清晰明了就行。
    不过上面有一个说得还是有道理的,汉字命名确实不利于补全。
    laike9m
        50
    laike9m  
       Nov 2, 2019 via Android
    that's fine
    miyuki
        51
    miyuki  
       Nov 2, 2019 via Android
    真要图一乐还得图一乐

    自己喜欢就完事了,名字太长的时候我也愿意用汉字
    kokutou
        52
    kokutou  
       Nov 2, 2019
    没有输入法的时候。。。。
    paopjian
        53
    paopjian  
       Nov 2, 2019 via Android   ❤️ 1
    自己写可以接受,对于那些强制 UTF8 编码的语言也不会出现编码问题,但是要是跨平台多编码的情况得特别小心。
    ericgui
        54
    ericgui  
       Nov 2, 2019
    代码里不要用中文,实在需要,搞个翻译包
    mozutaba
        55
    mozutaba  
       Nov 2, 2019   ❤️ 2
    中文可以等宽,这点很爽。比如长宽高等,英文 long 就挂了
    zjsxwc
        56
    zjsxwc  
       Nov 2, 2019 via Android   ❤️ 1
    不喜欢中文编程,
    由于编码不一致( vim 配置不一致,Linux 看 Windows 的 gbk 汉字等等),会碰到被删了半个汉字的情况
    😂
    zjsxwc
        57
    zjsxwc  
       Nov 2, 2019 via Android   ❤️ 2
    小写拼音首字母+汉字 可以作为折中的办法,

    比如 "bqfkbl 本期付款比例" "bzwchtngck 班组完成合同内工程款"

    解决了想名字难,又解决了编码时输入难的问题。
    s1E4GnZ4A2qGRyva
        58
    s1E4GnZ4A2qGRyva  
       Nov 2, 2019
    @jin7 将标识符批量中翻英的 VSC 插件: https://github.com/program-in-chinese/vscode_english_chinese_dictionary

    @cmdOptionKana 的确切换(shift)不一定更多。而且最近有时输入英文时不切换输入法,直接在中文输入状态下输入,还有点单词联想的感觉,比如搜狗下’inp’就有”input“。

    @blankme 一般在编程时,我就切换输入法设置到”中文输入下使用英文标点“。

    @FakeLeung form 下的是改不了吗?”in_fact_“读起来实在是。。。
    s1E4GnZ4A2qGRyva
        59
    s1E4GnZ4A2qGRyva  
       Nov 2, 2019
    @mozutaba 赞,等宽这个之前还没意识到。刚加到这里了《在代码中进行中文命名(类 /变量 /方法等)的优势》: https://zhuanlan.zhihu.com/p/40098652
    masker0817
        60
    masker0817  
       Nov 2, 2019 via Android
    我能说这些都不是很偏僻的词汇,其实是写的人英文不好的缘故吗?
    binux
        61
    binux  
       Nov 2, 2019   ❤️ 17
    源代码比起机器看得懂,让人看得懂更重要。
    比起让别人看得懂,让自己看得懂更重要。
    比起让外国人看得懂,让你的同事看得懂更重要。

    在实现同样功能前提下,能让人很容易看懂的代码就是好代码。
    打字速度慢?一个项目能有 20% 时间花在编码上吗?
    zazalu
        62
    zazalu  
       Nov 2, 2019 via Android   ❤️ 2
    比那些又臭又长还不懂啥意思的变量名好多了
    sl0000
        63
    sl0000  
       Nov 2, 2019
    经济学术语用英语真的是为难我等猿呀
    a1562619919
        64
    a1562619919  
       Nov 2, 2019 via Android
    @masker0817 漏了,看的人也不一定足够好
    TangMonk
        65
    TangMonk  
       Nov 2, 2019 via iPhone   ❤️ 1
    挺好的,有些很难翻译的我也用中文变量,这个时候反而更简洁易懂。
    FynnRelx
        66
    FynnRelx  
       Nov 2, 2019 via iPad
    好是好,到真是在线上这么搞我是不敢 逃
    goodlg
        67
    goodlg  
       Nov 2, 2019 via Android
    还是主流一点吧,不要这样命名,如果力求易懂,写好注释就可以,不管怎么说,自己喜欢就这样吧,自己看着舒服就好。
    askfilm
        68
    askfilm  
       Nov 2, 2019   ❤️ 1
    @FakeLeung 非常好!清晰易懂, 带给我很大的启示,打破思维禁锢。 另外汉字的表意完爆英文, 发挥的空间更大了
    lwh0328
        69
    lwh0328  
       Nov 2, 2019 via iPhone
    什么编辑器呀
    ThomasZ
        70
    ThomasZ  
       Nov 2, 2019
    以前编译器中文变量编译不过, 于是就习惯了拼音[doge]
    zachlhb
        71
    zachlhb  
       Nov 2, 2019 via Android
    不推荐,会遇到各种问题,再者翻译一些也不难的,另外不会写注释吗
    ikw
        72
    ikw  
       Nov 2, 2019 via iPhone   ❤️ 7
    进来之前是准备喷的,你这一张图片整得我不好开口了…
    Hurriance
        73
    Hurriance  
       Nov 2, 2019   ❤️ 1
    楼主这样的中文命名很规范啊!学到了学到了
    orzorzorzorz
        74
    orzorzorzorz  
       Nov 2, 2019   ❤️ 2
    本来进来准备看 v 众如何花式反对,但看了这张图我才发现,不是中文变量不好,是我见过的中文变量不够专业。讲道理,如果是这样的中文变量,跟规范不冲突我是一万个愿意的。
    loqixh
        75
    loqixh  
       Nov 2, 2019
    @masker0817 英文的固有缺陷, 不过有些人是不会承认的, 反而是为了省个字母缩写变成了所谓的 unix 哲学
    realpg
        76
    realpg  
       Nov 2, 2019   ❤️ 2
    @zachlhb #71
    大胸弟,就图里这些你翻译一下试试,翻译完再找个同事阅读看能理解不
    skiy
        77
    skiy  
       Nov 2, 2019
    为什么就没有人发明拼音文输入法呢?带声调的。
    中文的话,服务器如果不配置一下,打开会乱码。且打码时切换输入法很不方便啊。
    chensuiyi
        78
    chensuiyi  
       Nov 2, 2019   ❤️ 1
    开始用中文写代码。
    musi
        79
    musi  
       Nov 2, 2019 via iPhone
    在代码理解方面来说,中文的利大于弊,特别是一些专有名词,程序员还得一个一个查词典?但在程序运行方面来说,中文的弊大于利,编码就是个问题
    ljspython
        80
    ljspython  
       Nov 2, 2019   ❤️ 1
    居然还挺好看
    DefoliationM
        81
    DefoliationM  
       Nov 2, 2019 via Android
    看着就累。打中文比英文多打好多键呢
    love
        82
    love  
       Nov 2, 2019
    @realpg 这些都是专业名词吧,本身就不会很多,公司出个对照表让大家按上面的命名别自己发明不就行了
    zachlhb
        83
    zachlhb  
       Nov 2, 2019 via Android
    @realpg 我又不是没翻译过,再说注释是干嘛的
    realpg
        84
    realpg  
       Nov 2, 2019   ❤️ 1
    @zachlhb #83
    你怕是没写过大型财务系统 每次引用变量都注释一下?还是回去翻注释定义 还是把字典打印出来放手头
    Leigg
        85
    Leigg  
       Nov 2, 2019 via Android   ❤️ 1
    难的是说服你以外的人。
    lovestudykid
        86
    lovestudykid  
       Nov 2, 2019
    英文没有空格就是不如中文容易看懂,信息密度就是没有中文高,再加上大多数中国人浏览英文的速度总是不如中文快。主要的阻碍就是输入速度了。
    zhanao1994
        87
    zhanao1994  
       Nov 2, 2019 via Android   ❤️ 1
    我觉得挺好的
    Maxwells8
        88
    Maxwells8  
       Nov 2, 2019   ❤️ 1
    中文命名可以做到词等宽,所以排版会更整齐
    fpure
        89
    fpure  
       Nov 2, 2019 via Android   ❤️ 1
    有一说一,效果还不错
    zachlhb
        90
    zachlhb  
       Nov 2, 2019 via Android
    @realpg 你用的什么编辑器?现在编辑器都可以直接提示定义变量时写的规范注释
    QingXuJiaZhi
        91
    QingXuJiaZhi  
       Nov 2, 2019   ❤️ 2
    @lovestudykid 输入速度中文反而是优势,首先按键次数不会增加,然后自动补全也是有的,不仅编辑器有补全,中文输入法本身也有补全。
    redbuck
        92
    redbuck  
       Nov 2, 2019 via Android
    webpack 可能没问题,但是 git 以及 git 生态里的工具可能会出问题,遇到过某个同事用的 diff 工具把源码里的中文都变乱码还提交的😔
    weixiangzhe
        93
    weixiangzhe  
       Nov 2, 2019 via Android
    打包后是 abcd 啊,冲这句 我之后也要试试
    vipppppp
        94
    vipppppp  
       Nov 2, 2019
    这是我见过最好看的中文变量编程了
    但我还是不会用,感觉切输入法也麻烦还有就是在一些终端上不额外安装东西不支持中文字符。。。
    iugo
        95
    iugo  
       Nov 2, 2019
    我可以接受.

    我在项目初期没有找到合适专业词汇的时候也会写中文变量名. 后面命名统一后会改.
    bumz
        96
    bumz  
       Nov 2, 2019 via iPhone   ❤️ 1
    私以为,楼主这种情况需要的不是变量
    而是字典
    FakeLeung
        97
    FakeLeung  
    OP
       Nov 2, 2019
    @weixiangzhe #93
    一定要是局部变量,而且不能是对象键名。
    FakeLeung
        98
    FakeLeung  
    OP
       Nov 2, 2019
    @bumz #96
    不太懂什么叫字典。
    liuzhiyong
        99
    liuzhiyong  
       Nov 2, 2019 via Android
    我觉得不错,可读性非常好。读代码的时间一般大于写代码的时间,个人觉得可读性更重要。然后我遇到这种情况一般是拼音。
    hubqin
        100
    hubqin  
       Nov 2, 2019   ❤️ 1
    以前用过百度的 API,返回的数据,KEY 就是用中文,对于一些名字,翻译后反而不知道十个啥,还是直接中文好。
    1  2  3  4  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4100 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 222ms · UTC 05:29 · PVG 13:29 · LAX 22:29 · JFK 01:29
    ♥ Do have faith in what you're doing.