编程中使用汉字作为变量与使用英文作为变量到底有没有本质的区别?差距在哪里? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Sniper416
V2EX    程序员

编程中使用汉字作为变量与使用英文作为变量到底有没有本质的区别?差距在哪里?

  •  
  •   Sniper416 2020-04-16 15:0:50 +08:00 3248 次点击
    这是一个创建于 2055 天前的主题,其中的信息可能已经有所发展或是发生改变。
    32 条回复    2020-04-17 12:23:22 +08:00
    killerirving
        1
    killerirving  
       2020-04-16 15:13:11 +08:00
    抛开编程历史发展原因,外国人学中文更难,中国人学英文更容易,所以还是英文更有竞争力。
    guyeu
        2
    guyeu  
       2020-04-16 15:13:44 +08:00
    在大多数现代语言中没有本质区别,差距在于输入效率和跨平台兼容性以及可维护性。
    MOETAN0
        3
    MOETAN0  
       2020-04-16 15:19:08 +08:00
    我是这么想的
    1,英文保证在所有编辑器、终端下看起来都一样(这个和 tab/space 之争是一个道理)
    2,代码书写效率,无需频繁切换输入法
    murmur
        4
    murmur  
       2020-04-16 15:22:08 +08:00   2
    在某些行业软件中使用中文变量函数名可能有意想不到的效果
    什么叫英文更有竞争力,这句话我说了无数遍,中国人开发的软件、中国人使用、中国人维护,为什么要照顾洋人的感受?
    你开发个武侠游戏,要把所有的技能翻译成中文再编码,你觉得蛋碎不
    xianxiaobo
        5
    xianxiaobo  
       2020-04-16 15:27:38 +08:00
    没有,我一直相信假如中国最先开始工业革命,假如中国最先发明了计算机和编程语言,那么编程肯定是用中文。
    goodboy95
        6
    goodboy95  
       2020-04-16 15:43:36 +08:00
    本质上没有,不过现在确实有些 ide 对中文支持不咋好(当然这个时候别说是变量名了,注释写中文都会蛋疼)
    cmdOptionKana
        7
    cmdOptionKana  
       2020-04-16 15:50:39 +08:00
    并不是一切项目都要考虑外国人……很多项目就是小范围使用。
    cmdOptionKana
        8
    cmdOptionKana  
       2020-04-16 15:53:06 +08:00
    中文变量名输入效率蛮高的,因为可以简拼,变量只要打一次,后面就首字母简拼非常方便。而且输入法也能设为半角符号。
    rogwan
        9
    rogwan  
       2020-04-16 15:58:39 +08:00 via iPhone
    for item in items,驼峰命名 这些习惯,中文没法表现出来
    rogwan
        10
    rogwan  
       2020-04-16 16:04:10 +08:00 via iPhone
    @xianxiaobo #5 有道理。中文先入为主,也是可以搞出方法的,近现代欧美人领先了一轮,英语成了习惯方案 。
    augustheart
        11
    augustheart  
       2020-04-16 16:04:35 +08:00
    如果是本质上,没有任何区别。正常的现代编译器并不管你输入的是中文还是英文,对它来说都是符号(编译器使用的关键字例外,但是这些编译器关键字编译器本身也并不在乎它到底是什么)。
    但是如果从浏览上来说,相对 ascii 字符,由于汉字的信息密度比英文大很多,看起来可能会有点累……
    augustheart
        12
    augustheart  
       2020-04-16 16:08:06 +08:00
    @augustheart 当然信息密度大并不只是汉字这样,象形文字语言相对字母文字语言就会有类似的情况。
    Sniper416
        13
    Sniper416  
    OP
       2020-04-16 16:09:38 +08:00
    @augustheart 也就是说类似 js 这种解释型语言变量使用中文开销会大一些?
    wr410
        14
    wr410  
       2020-04-16 16:09:44 +08:00
    没区别,混淆器就是用奇奇怪怪 unicode 去替换变量名的
    augustheart
        15
    augustheart  
       2020-04-16 16:17:00 +08:00
    @Sniper416 你再看一遍我的意思。
    不会,只会眼睛累一点……
    对编译器来说,apple 与苹果的区别,只是
    "0x61 0x70 0x70 0x6c 0x65"

    "0xe8 0x8b 0xb9 0xe6 0x9e 0x9c"
    两个数组的不同而已……
    lithbitren
        16
    lithbitren  
       2020-04-16 16:18:02 +08:00
    没有本质区别,一般是不推荐用,有时候编码问题会带坑,不过部分特殊行业的变量名在实践上好像用中文变量真的比翻译后的英文变量要直观得多,最起码也比拼音或拼音缩写以及拼音英文混写好一亿倍。
    xcstream
        17
    xcstream  
       2020-04-16 16:20:27 +08:00
    汉字是文化自信(滑稽)
    goldenalex
        18
    goldenalex  
       2020-04-16 16:21:24 +08:00
    我的理解是本质没有区别。

    但是在编译的时候会使用更多的时间和占用更多资源,虽然你感受不到,但是应该确实存在的。。。
    yinzhili
        19
    yinzhili  
       2020-04-16 16:22:20 +08:00
    中文作为变量名可以,前提是要有统一的命名规范。
    因为中文太灵活了。比如: [总费用] , [全部费用] , [合计费用] ,它们可以代表同一种含义,但取名的时候,就容易混乱。
    IsaacYoung
        20
    IsaacYoung  
       2020-04-16 16:23:03 +08:00
    打字慢
    augustheart
        21
    augustheart  
       2020-04-16 16:26:56 +08:00
    @yinzhili 讲真,在这个问题上,英文也有 total,amount,quantity 甚至 number 什么什么的
    luckyrayyy
        22
    luckyrayyy  
       2020-04-16 16:41:37 +08:00
    没啥本质区别,就是打字麻烦,复杂业务变量我倒是觉得用中文挺好,省的有歧义
    jin7
        23
    jin7  
       2020-04-16 17:32:56 +08:00
    自己用 没区别
    ajaxfunction
        24
    ajaxfunction  
       2020-04-16 17:34:39 +08:00
    说实话,我觉得中文命名就挺好,可是迫于环境使然,没法用。
    不信你整个开源项目放 github 上试试,绝对换来的是一堆人的嘲讽
    NoKey
        25
    NoKey  
       2020-04-16 18:11:45 +08:00
    除了变量名用中文,语句用中文不?
    如果 苹果数量 >= 5
    那么 吃(3 个)
    不然 吃(1 个)
    MeteorCat
        26
    MeteorCat  
       2020-04-16 18:24:08 +08:00 via Android
    实际上武侠游戏也不推荐用中文变量名编码,大部分用 skill_001 这样编码,因为策划出技能的时候可能只是代称,后期出现把"攻击"变成"突击"/"撞击"/"冲击"的时候,特别技能组特别多的时候或者版号审核比较血腥名称技能的时候可能会被和谐
    felixcode
        27
    felixcode  
       2020-04-16 18:24:52 +08:00 via Android
    @NoKey 都改了更好
    如果 苹果数量 大于或等于 伍个
    那么 吃(叁个)
    不然 吃(壹个)
    xuanwu
        28
    xuanwu  
       2020-04-17 08:41:26 +08:00
    试过么?实践出真知。
    mzlgx
        29
    mzlgx  
       2020-04-17 09:21:42 +08:00 via Android
    输入法切换不累吗?
    jzmws
        30
    jzmws  
       2020-04-17 09:31:55 +08:00
    中文有时候会遇到奇葩的问题,比如说少字符集啦 , 之前有一台 linux 服务器没有中文语言包,根本加载出去中文的
    libook
        31
    libook  
       2020-04-17 10:52:04 +08:00 via Android
    本地化需求:看编译器的支持,像 JS 是完全没问题的,对于有中文本地特色的概念来说,用中文可读性更高,因为并不是所有概念都能信达雅翻译成英文,对于业务相关的协作开发者来说,换成英文可能也很难看懂。

    国际化需求:还是要看项目定位,是否有可能在国际范围内推广,或者引入外国开发者协作,英语作为国际化语言有国际化优势。


    代码可读性最重要,曾经纠结过注释是用英文还是中文,但最后发现小孩才做选择,只要能达到可读性高,用什么语言都无所谓。
    gz911122
        32
    gz911122  
       2020-04-17 12:23:22 +08:00
    很多时候没法翻译成英文,或者就没有对应的英文.
    比如山东十一选五,重庆时时彩,
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     953 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 19:22 PVG 03:22 LAX 11:22 JFK 14:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86