V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
einsdisp
V2EX  ›  程序员

有没有团队在实际项目中,在写业务代码时,遇到业务强相关的变量,使用中文变量名称?

  •  
  •   einsdisp · 2020-06-26 01:36:40 +08:00 · 4889 次点击
    这是一个创建于 1371 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候遇到业务强相关的变量,如果按照传统使用英文变量,一来要想翻译成地道的英文很困难,二来难以理解,不仅别人看代码时难以理解,如果这些变量太多的话,自己也难于记忆。

    我看别人的代码,像英文命名不地道的、拼写错误的,更有甚者使用拼音命名的,这种恶心的事情简直不要太多。

    于是我想,现在但凡主流的高级编程语言以及数据库,全都支持使用 Unicode 字符命名变量,遇到业务强相关的逻辑时,何不直接用中文?

    当然,在写通用模块或库时,或者与业务联系不大的逻辑,当然还是应该用英文变量名。

    如果是个人项目无所谓,适合自己的就是最好的。但是如果是公司团队,有没有团队在实际项目中使用中文命名?

    48 条回复    2020-06-30 18:22:24 +08:00
    zhilincom
        1
    zhilincom  
       2020-06-26 01:56:45 +08:00   ❤️ 1
    还是用英文比较好吧,最好加上中文注释。一般行业术语 /专业术语都有对应的英文翻译,除非是自编自造且不流行的特定词汇,这种情况用中文一般人也很难理解好不。
    zhilincom
        2
    zhilincom  
       2020-06-26 01:58:11 +08:00
    还有一个用中文做变量你不觉得切换输入法就很麻烦吗?
    watzds
        3
    watzds  
       2020-06-26 01:59:45 +08:00 via Android
    我用中文枚举
    RicardoY
        4
    RicardoY  
       2020-06-26 02:28:16 +08:00
    我感觉中文枚举比英文枚举清晰很多...但是 leader 好像不是很喜欢...
    darrenfang
        5
    darrenfang  
       2020-06-26 02:39:50 +08:00   ❤️ 2
    之前遇到一个枚举:一居室,二居室,三居室,四居室,联排别墅,独栋别墅...

    果断用中文了
    Code418
        6
    Code418  
       2020-06-26 06:00:20 +08:00
    虽然中文变量名我是反对的。

    这确实是个很大而且很烦的议题。编码五分钟,命名一小时……有时候找对应通用翻译不是非常容易,尤其很多领域跟业务场景,其实内地的习惯跟全世界都不一样,只能勉强对应上去,事实上表意反而很不精确。而且常常也会导致命名太长的问题,生生当 java 写(咳)

    前面提到的用中文枚举感觉虽然还是很难受,但感觉大家商量下,在必要的地方用,感觉还是勉强可以接受的,应该也可以解决掉大部分问题。但是如果是作为普通变量名或是其他 token 的话感觉就真的太难受了,这个完全不能接受。

    而且中文本身过度自由了,有 ide 自动完成实现得够好的情况还成,但团队如果有人用的开发工具这个不行的话,估计应该会非常难受。

    环境问题还有很多,现在可能还好些,基本上应该问题不大,但我想起几年前吧,有很长一段时间(记得是 java vm 的问题还是怎么的),我用 idea 全家桶没法儿用输入法直接键入中 /日等语言,那会儿要我在代码中用中文那就是要我死。而且这还要求开发环境必须要能用中文,虽然应该很少人遇到这种情况…

    混杂拼音的话主要是感觉视认性跟表意性也很差,而且真的看起来会非常不舒服,这个不知道怎么整。日语的话用罗马拼音在这个问题上感觉不会这么难受,可能一方面因为英语中引入日语词汇已经非常多了,观感上已经习惯了,加上日语本身的音节特别干净简单。但是真的用太多看起来还是会非常恶心,而且虽然没有中文那么严重,视认性也还是很烂的。

    楼主还有提到数据库,库里的表或栏位或 key 直接使用中文从没做过,不确定可行性,但也感觉难以接受,而且吐出一堆 field 都是中文这个看了会傻眼的吧就。而且 non-ascii 额外还牵涉到编码的问题,整体的可用性可靠性鲁棒性可移植性各种性感觉都会有影响,说就直接 unicode 解决一切拯救世界这个,反正我这种老古董是很难直接就接受的。

    反正这个问题真的困扰。为了规避这个问题,我反正常常在其实不需要的情况下强行拆出来结构甚至逻辑,使其完全脱离代码,别问,问就是可自定义,高扩展性,增加业务弹性…

    嘛写了一些想法但也没有提出什么建设性的东西,总之我就当插个眼。
    Daming
        7
    Daming  
       2020-06-26 06:32:41 +08:00
    有些特定行业内的枚举值会使用中文,主要是那玩意基本没法正常翻译成英文。
    hantsy
        10
    hantsy  
       2020-06-26 08:22:08 +08:00
    你们这些用中文应该从来没做过国际化的项目,如:多语言支持,本地化页面,虽然每个框架都会考虑国际化。
    dttzmm
        11
    dttzmm  
       2020-06-26 08:59:07 +08:00 via Android
    英语不行还是要补英语,找这么多借口不好
    lululau
        12
    lululau  
       2020-06-26 09:08:50 +08:00 via iPhone
    就算拼音首字母缩写也比汉字强啊,汉字输入效率太低,还有输入法切换的开销
    murmur
        13
    murmur  
       2020-06-26 09:40:12 +08:00
    只见过数据库中文,还没见过代码中文,但是有些行业用语真不是你抱着字典就能纠结出来的

    又有人来吹国际化,你服务中国人都服务成那样还想着国际化,中国人的项目中国人开发中国人维护中国人使用,哪里能碰到国际化
    murmur
        14
    murmur  
       2020-06-26 09:42:48 +08:00   ❤️ 1
    说英语不行 xxx 的怕是不知道隔行如隔山,更不说有些行业是国内领先,我们用的就是自己的标准,去哪里翻译中文去
    murmur
        15
    murmur  
       2020-06-26 09:45:28 +08:00   ❤️ 2
    我举几个发电相关最基本的词:脱硫 脱硝 电除尘 这些词如果写成中文的话高中文化水平就可以理解,根本不需要文档

    把脱硫翻译成英文,desulfurization,这个词怕是过了六级的都不知道啥意思
    gwybiaim
        16
    gwybiaim  
       2020-06-26 09:47:14 +08:00   ❤️ 2
    有利于可读性,就可以做。
    上面有人提到的无脑英语优先、切换输入法麻烦、视认性???、国际化、提升英语水平、输入效率的,都找不到编程的重点。
    gwybiaim
        17
    gwybiaim  
       2020-06-26 09:47:58 +08:00
    另,中文也是联合国常用语言,很国际化
    hakono
        18
    hakono  
       2020-06-26 09:52:01 +08:00 via Android   ❤️ 1
    @hantsy 一个项目的用户可以国际化,但代码的开发维护者差不多都是固定国家的。
    除非本身开发的项目涉及到国际外包,或者公司里不光有中国人还有大量其他国家的职员(这情况在日本美国倒是很常见),一般也不会遇到代码上有国际合作的情况。
    slyang5
        19
    slyang5  
       2020-06-26 10:03:47 +08:00   ❤️ 1
    @Code418 你去看看日本的开源项目, 枚举一般都用日文了。嘻嘻 不知道你难受什么。人家项目是规范的很
    pigspy
        20
    pigspy  
       2020-06-26 10:09:07 +08:00
    我一个同事跟我吐槽过,以前做对日项目的时候,本子写的老代码里面英文变量名音读训读一起来,个别变量还用片假名
    WebKit
        21
    WebKit  
       2020-06-26 10:09:27 +08:00 via Android   ❤️ 2
    @zhilincom 你来给我这个游戏技能 生灭予夺 想个英文翻译
    linvaux
        22
    linvaux  
       2020-06-26 10:39:46 +08:00   ❤️ 3
    我觉得做游戏的应该用中文的多一点吧,毕竟 旋龙幻杀、魔魂天咒、天 bai 魔舞、痴情咒、无间寂、狱 du 龙破、虚空斩、霸天戮杀、毒龙蚀天、灭魂狂飙、天选道怨、百鬼夜行、狱火炼魂、碎魂天袭、凝血神咒、归灵秘印、燃魂劫火、百蛊啖魂、邪神傲世、无量真言、慈航普度、天地同寿、佛光普照、净土真言、六道轮回、破魔秘言、摩诃心经、雷音法谕。影舞·形、影舞·魂、风切、潜袭、雷切、龙切、斗杀、影舞·极 这些技能用英文变量名可能真的会要人老命的
    newtype0092
        23
    newtype0092  
       2020-06-26 10:44:43 +08:00   ❤️ 1
    宁愿用拼音也绝对不用中文。
    你也说了主流的高级编程语言以及数据库才保证支持 Unicode,无法保证从开发工具到服务器部署整条链上都严格支持的功能还是不贪这个小便宜的好。
    newtype0092
        24
    newtype0092  
       2020-06-26 10:50:03 +08:00   ❤️ 1
    @WebKit 哈哈游武侠仙侠里的名词,中翻英都要经过一层意译的,不然你以为“龙卷风摧毁停车场”“乌鸦坐飞机”这些词是怎么来的,这个是基本做不到保持原味的。。。
    wushigejiajia01
        25
    wushigejiajia01  
       2020-06-26 12:07:57 +08:00 via Android
    1.用尽量贴合的英文,然后加注释。
    2.中文枚举(这个估计要团队内商量好才行,不然大概率会被喷)
    3.中文拼音(再加注释,有可能也会被喷)
    lithiumii
        26
    lithiumii  
       2020-06-26 12:47:33 +08:00   ❤️ 3
    @murmur 您这个例子举得不好,desulfurization,de 是去除,sulfur 是硫,后面 ization 是动词化再名词化,可不就是脱硫吗。英语过了六级的人只要认识硫就应该能懂
    yangbonis
        27
    yangbonis  
       2020-06-26 13:07:29 +08:00 via iPhone
    把你业务也用用英文描述就行了吧
    pinkSlime
        28
    pinkSlime  
       2020-06-26 13:49:10 +08:00
    请翻译:凌波微步 六脉神剑 修罗阴煞功 万流朝海元元剑法 百变阴阳玄机剑法
    solider245
        29
    solider245  
       2020-06-26 14:23:38 +08:00
    @murmur 让我想起乒乓球的国际语言是中文。记得有一个笑话,乒乓球某领导新上任,说文档都是中文,国际化不够。
    maoxs2
        30
    maoxs2  
       2020-06-26 14:50:37 +08:00 via Android
    四六级:是我的翻译题还不够难吗?
    qiumaoyuan
        31
    qiumaoyuan  
       2020-06-26 14:55:22 +08:00
    @linvaux 哈哈哈哈,太欢乐了。
    passerbytiny
        32
    passerbytiny  
       2020-06-26 16:06:46 +08:00
    如果你接触过传统软件文档、写过论文、或者任何非“门槛低”的行业的文档,那么你会知道一个名词:术语。业务强相关的名词,就算是纯英文开发环境,也要用专门的术语文档或章节来描述,不然外人和新人会眼瞎。你弄个全团队都能一眼看明白的中文变量还可以,否则不如英文代号+术语描述。
    jiangweixian
        33
    jiangweixian  
       2020-06-26 16:12:54 +08:00
    在菜鸟阶段干过,但是被教育编程是英本位的行为,所以还是英文变量名比较合适。感觉说的挺合理,要是以后出现一门中文的编程语言,中文变量名是没啥毛病的。
    DJQTDJ
        34
    DJQTDJ  
       2020-06-26 16:31:00 +08:00
    多了去了,曾经干过德语项目,这你妈还见过用德语命名变量的。
    murmur
        35
    murmur  
       2020-06-26 16:47:46 +08:00   ❤️ 1
    @passerbytiny

    “你弄个全团队都能一眼看明白的中文变量还可以”
    你知道需求文档么,需求文档叫什么我就叫什么,大家都看得懂需求文档吧
    snowonion
        36
    snowonion  
       2020-06-26 16:49:05 +08:00 via Android   ❤️ 1
    see also 大家对于中文变量名是如何看待的? https://v2ex.com/t/615420?p=2
    我是支持的,具体见 130 楼
    aguesuka
        37
    aguesuka  
       2020-06-26 17:38:18 +08:00
    @linvaux 游戏不要用中文名,否则被收录到和谐字典里的时候会后悔的
    justin2018
        38
    justin2018  
       2020-06-26 20:52:42 +08:00
    实在没有合适的英文 可以拼音 + 注释

    无法忍受变量中文名~~~
    xiangyuecn
        39
    xiangyuecn  
       2020-06-26 21:02:08 +08:00   ❤️ 1
    当同样的东西又几十上百个的时候。。。写国语的便利性,不说话,看代码:




    FaiChou
        40
    FaiChou  
       2020-06-26 21:47:19 +08:00
    Zien
        41
    Zien  
       2020-06-26 21:59:33 +08:00   ❤️ 1
    我以前连注释也不用中文,但现在感觉也无所谓吧,只要更利于阅读理解和业务,而且运行环境能控制好,且业务只在国内的话,也可以因地制宜。
    sohoorc
        42
    sohoorc  
       2020-06-27 10:10:22 +08:00
    给某部委做项目,国家标准的字段是中文首字母字符串。 所以我们自然也就按照国家标准来,用拼音首字母。
    fniy
        44
    fniy  
       2020-06-27 19:10:28 +08:00 via iPhone
    @murmur 你这是名词,词典能查到,还好
    annielong
        45
    annielong  
       2020-06-27 19:48:55 +08:00
    优先用英文术语,没有用国标字符串,再次就用拼音加注释,
    Code418
        46
    Code418  
       2020-06-30 17:33:04 +08:00
    @slyang5 就你在看代码呢?而且我说的罗马拼音混代码里头看着难受,你在这儿 high 个什么?参予过实际业务项目被虐过才知道烦。而且我的感受跟人家规范有几毛钱关系?
    Code418
        47
    Code418  
       2020-06-30 17:44:23 +08:00
    @cshijiel 劳您视认性打了三个问号,我觉得这边得回应一下。

    这边是故意用这个词跟可读性切割开来的。我原本提到这个词指的是用拼音,如果把词给看出来了,那代码本身可读性应该是跟你直接使用日语 /中文是一样的,尤其在这边提到的特殊业务场景下。

    但是问题在于看拼音还得花力气先看出来在写的是什么呢?就这么个情况。当然可能用词不是很精确,我原本也其实就是讲点个人碰见过的情况跟感受。

    举个极端点的例子,编辑器你高兴用什么字体,都不能说字体让代码的可读性变差吧?但是太花里胡哨的你自己都得花力气去看懂,当然也有典型的 0OiI 之类的问题存在。虽然不太精确,但我这视认性指的就类似这种情况。
    gwybiaim
        48
    gwybiaim  
       2020-06-30 18:22:24 +08:00   ❤️ 1
    @Code418 不好意思我的第一语言是中文,第二语言才是英文,然而这两者都不是您提到的拼音或者其他什么语言。

    第二语言(英文)中出现第一语言(中文)丝毫不影响“视认性”,谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3260 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:10 · PVG 21:10 · LAX 06:10 · JFK 09:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.