V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Hbisedm
V2EX  ›  问与答

编写业务时,枚举用中文真的不好吗

  •  
  •   Hbisedm · 352 天前 · 7405 次点击
    这是一个创建于 352 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如一些业务状态,我用枚举定义

    export enum selfDeliveryStepListEnum {
      顾客下单,
      顾客付款,
      商家接单,
      顾客取货,
      评价,
    }
    

    那么我判断时候,取selfDeliveryStepListEnum.顾客下单 这样的写法

    我觉得对于英语不好的人,维护性不是很好吗,老是纠结英语中文这些真的好吗。

    我编程水平也不是很好,所以求大佬指导下!!

    87 条回复    2023-11-03 15:40:04 +08:00
    f6x
        1
    f6x  
       352 天前
    请使用易语言, 哼哼哈嘿
    mineralsalt
        2
    mineralsalt  
       352 天前
    可以写中文, 不会出 bug, 而且枚举写中文的好处也多, 比如你这个例子在前端显示的时候可以直接返回 .name() , 省得再转换一遍了, 又省事又容易理解, 唯一不好的可能是有些人觉得 low 吧
    Leviathann
        3
    Leviathann  
       352 天前   ❤️ 5
    坏处就是要切输入法

    不过 ts 的 enum 不要用,直接用 object literal
    sghwn2
        4
    sghwn2  
       352 天前
    一个中文占两个字节,一个英文字母占一个字节,编出来的代码会大一点
    hervey0424
        5
    hervey0424  
       352 天前
    不管是 ts 还是 C#, 枚举我基本都是用中文的, 感觉很好用
    Hbisedm
        6
    Hbisedm  
    OP
       352 天前
    @sghwn2 打包后,ts 定的这些中文不就没了吗,编码阶段这些字节大小影响不大吧
    mineralsalt
        7
    mineralsalt  
       352 天前   ❤️ 5
    @sghwn2 #4 你这个说法其实不对, 有时候中文两个字就能表达意思, 而对应的英文 4 个字节可打不住
    sadfQED2
        8
    sadfQED2  
       352 天前 via Android   ❤️ 1
    确实没什么不好,很多专业术语真的很难翻译成英文,10 个人翻译出 10 种不同的,还不如写中文。

    为啥我不写中文,因为逼格不够,写出来的代码不好意思提交
    Trello
        9
    Trello  
       352 天前
    @Leviathann ts 的枚举有啥问题嘛?为啥不建议使用呢?
    cmdOptionKana
        10
    cmdOptionKana  
       352 天前   ❤️ 1
    技术上没问题, 但有人觉得中文很 low, 然后就找些乱七八糟的借口来挑刺.

    上面已经出现这种人, 下面还会有样本陆续提供.
    qsnow6
        11
    qsnow6  
       352 天前
    tuchg
        12
    tuchg  
       352 天前   ❤️ 4
    可以了解下我开发的项目 目前调用中文的时候可以通过拼音 /五笔等方式调用,很方便,完全不需要输入法参与和英文一致的调用体验,在需要写中文时还需切换不过社区已有内嵌输入法的实践,能很好解决这个问题,欢迎体验

    https://github.com/tuchg/ChinesePinyin-CodeCompletionHelper
    @Leviathann
    tuchg
        13
    tuchg  
       352 天前
    中文在现代完全没有技术支持上的问题,更多的是一种来自 international 的偏见
    DeltaC
        14
    DeltaC  
       352 天前
    如此中文编程,我十分支持。
    beimenjun
        15
    beimenjun  
       352 天前
    自己爱怎么写怎么写,如果是团队开发你能说服一个团队按照这个规范写就行。

    但是你这个 selfDeliveryStepListEnum 是啥啊……自助步骤列表枚举?

    如果你英文命名很困难,要不然还是问问 ChatGPT 吧。
    masterclock
        16
    masterclock  
       352 天前
    最大的问题是要切换输入法,实在太麻烦了
    beimenjun
        17
    beimenjun  
       352 天前
    Hidetodong
        18
    Hidetodong  
       352 天前
    @Leviathann 想知道两者的优缺点
    iseki
        19
    iseki  
       352 天前
    主要是切输入法有点烦,不过真要是不好翻译,就用全拼吧,这种地方非 ASCII 兼容字符尽量不要用,Unicode 太复杂,容易出问题
    tuchg
        20
    tuchg  
       352 天前
    @iseki 全拼有多音歧义,而且阅读起来会很难受还不如英语 不如一步到位直接中文多直观 unicode 现在应该几乎没有语言不支持了 emoji 都有拿来用的何况说中文
    HENQIGUAI
        21
    HENQIGUAI  
       352 天前
    团队里没有外国人的情况下,当然可以用中文。
    duke807
        22
    duke807  
       352 天前 via Android   ❤️ 1
    中文有很多字很接近甚至完全一样,但是它们的编码不同,而且不像 ASCII 很容易排除
    butanediol2d
        23
    butanediol2d  
       352 天前
    试了一下,好像还挺爽的( x

    pcmgr456
        24
    pcmgr456  
       352 天前 via Android
    写中文好,毕竟国内的开发人员英文太烂了,而且很多都是中国特色的名字也不好翻译成英文,直接写中文是坠吼的
    paopjian
        25
    paopjian  
       352 天前
    没什么问题,我现在就怕编码问题,有些服务器里的 vim 用的还是 ascii,结果就是如果在服务器上用 vim 临时改代码,会导致代码里的中文错误,恶心死我了
    kdwnil
        26
    kdwnil  
       352 天前 via Android
    没有好不好只有合不合适,只要一块写代码的都看得懂,用中文又没什么坏处,如果身边都看不懂中文还要强行用那才是不合适。用中文麻烦点的可能就是未来要搞 i18n 时会费点时间
    kdwnil
        27
    kdwnil  
       352 天前 via Android
    另外用中文看不懂至少还能上翻译,那些硬要用拼音首字母还要混搭拼音和英语单词做名字的才是真正的邪恶混沌
    yaphets666
        28
    yaphets666  
       352 天前
    不合适,英文是世界通行语言,不会就去学
    nothingistrue
        29
    nothingistrue  
       352 天前
    现实交流当中,中英混合是要被打的。你要编写的是不打算交流的代码,那随便搞。如果是编写的会有其他人看的代码,那么就不要干中英混合这种不尊重人的事。
    3dwelcome
        30
    3dwelcome  
       352 天前
    以前一直把中文翻译到英文,用英文变量,为了和国际化接轨。

    后来发现,除非项目开源,否则我的源代码永远不可能会有老外来看。

    想通后,我就全部改成中文编程了。早期发过类似帖子,可惜进水深火热了 t/795055
    jmc891205
        31
    jmc891205  
       352 天前
    只要你确定未来不会有外国人看这块代码,那没啥问题
    3dwelcome
        32
    3dwelcome  
       352 天前
    @nothingistrue 中文变量只在业务向代码里用,又不是用在基建代码。

    对我来说前者就是一次性的筷子,用完就扔,没什么讲究的。写业务,怎么快就怎么来。

    写英文代码注释还需要过一下脑子。写中文注释脑子都不需要过。
    Hbisedm
        33
    Hbisedm  
    OP
       352 天前
    @3dwelcome 对,不是开源的情况下,做业务的话,这种写法真的快,而且维护性挺高的
    iseki
        34
    iseki  
       352 天前 via Android
    @tuchg Unicode 很复杂,很容易出现看上去一样但比较字符就是不一样的情况,容易出事
    sghwn2
        35
    sghwn2  
       352 天前
    @Hbisedm 我不太懂 ts ,但是不管是中文还是英文,底层总要有一个地方编码存储吧,给英文字符编码就是一个字节的空间,中文的话可能就长一点
    sghwn2
        36
    sghwn2  
       352 天前
    @mineralsalt 有道理
    litchinn
        37
    litchinn  
       352 天前
    所有环境同一个编码的话我觉得就没啥问题
    dqzcwxb
        38
    dqzcwxb  
       352 天前
    只要是 Unicode 就没有问题,都 Unicode 也不存在所谓的性能问题
    mxT52CRuqR6o5
        39
    mxT52CRuqR6o5  
       352 天前
    @Hbisedm const enum 能优化掉,非 const enum 会编译成 object
    mxT52CRuqR6o5
        40
    mxT52CRuqR6o5  
       352 天前
    但说实话我觉得没啥,团队能接受就行,编程语言支持 unicode 作为变量名 /属性名就是允许你去做这种事的
    mxT52CRuqR6o5
        41
    mxT52CRuqR6o5  
       352 天前
    至于编码问题的话,web 早就 all in unicode 了,很难想象现在开发 web 还能碰到编码问题
    Hbisedm
        42
    Hbisedm  
    OP
       352 天前
    @mxT52CRuqR6o5 确实 const enum 优化掉了, 感谢大佬指点
    shenlanAZ
        43
    shenlanAZ  
       352 天前
    其实你可以 把类名,方法名都用中文写
    chrosing
        44
    chrosing  
       352 天前
    @butanediol2d 你这是什么 IDE 呀。挺好看的
    kangyue9999
        45
    kangyue9999  
       352 天前
    @sghwn2 不会吧,这个如果不输出只是内部枚举的话,编译器应该会自动替换成随机的 ascii 码吧
    kangyue9999
        46
    kangyue9999  
       352 天前   ❤️ 1
    @butanediol2d 你这中文化不纯粹,应该是
    引入 基础

    枚举 下单送货步骤列表枚举 冒号 字符串 大括号
    状态 客户下单
    状态 客户付款
    状态 商家接单
    状态 顾客取货
    状态 评价
    大括号完

    功能 测试 小括号 步骤 冒号 下单送货步骤列表枚举 小括号完 大括号

    大括号完

    测试 小括号 点 。。。。。
    zzz2021zzz
        47
    zzz2021zzz  
       352 天前
    没啥问题啊,还可以加上儿化音,顾客儿下单儿,老板儿接单儿,读得时候还可以用川普读
    LifStge
        48
    LifStge  
       352 天前
    没啥问题 不过就是得注意编码统一 先不说上面说的 unicode 的一些问题
    举个容易出现的问题 比如不配置好编码 用 vscode 打开 经常容易出现 中文变乱码的问题 默认是 utf8 处理了
    配置好就行了 要注意其他工具编辑啥的处理 也容易出现类似 别一个不留神 没发现 导致意外错误就不好了.
    vuevue
        49
    vuevue  
       352 天前
    不考虑偏码转换的是可以
    fournoas
        50
    fournoas  
       352 天前
    其实不用切输入法,按下".",剩下的交给 IDE 自动补全
    cydysm
        51
    cydysm  
       352 天前 via iPhone   ❤️ 1
    没问题没问题没问题
    网易好久以前在活动中就使用过了
    https://mp.weixin.qq.com/s/oMS8iXykcQahDu1uoODWiw#at
    可看文中小插曲片段
    8355
        52
    8355  
       352 天前
    不是 low 不 low 的问题
    如果其他人都是用英文 应该统一英文,方便理解包括变量名之类的就都是英文,你用中文割裂感是客观存在的
    其次英文可以写中文注释并不需要纠结可维护性之类的问题
    leeyuzhe
        53
    leeyuzhe  
       352 天前
    主要是切换输入法太痛苦了
    butanediol2d
        54
    butanediol2d  
       352 天前
    @chrosing #44 就是个编辑器,Sublime Text

    @kangyue9999 #46 🤣认真点说的话,补全的东西不需要自己打,所以可以用中文,其他的要自己打,切换输入法还挺麻烦,除非括号什么的都用全角。
    kalista
        55
    kalista  
       352 天前
    我在代码里面不爱用中文的原因是之前公司写 cpp 的时候被编码烦到了,可能是菜的原因
    luzemin
        56
    luzemin  
       352 天前
    团队共识就行,编程风格统一就行
    tuchg
        57
    tuchg  
       352 天前
    @butanediol2d 这些都不是问题 都能用 IDE 插件解决
    zidian
        58
    zidian  
       352 天前
    好得很。爽得很。

    要是团队里有不识中文的外国人,要写英文的地方多了去了何止枚举这点东西
    JavenXiao
        59
    JavenXiao  
       352 天前
    需要切换输入法 +1 ,这点真的是很羡慕英语母语国家的程序员
    wangsd
        60
    wangsd  
       352 天前
    恨不得变量都用中文写,有的英文都不知道怎么翻译。
    devloperchen
        61
    devloperchen  
       352 天前
    @beimenjun 你这个 chatgpt 界面是自己开发的还是用开源项目搭建吗?我看到我老婆公司搭建的 chatgpt 平台和你这个很想。我们公司做的很简陋。
    uni
        62
    uni  
       352 天前
    我从来都是这么写的啊,输入法只需要在写 enum 的时候切,用的时候全部用补全就行了
    这么写的好处除了清晰之外,还有一点就是前端写页面的时候直接用 enum 取个值就可以拿到标签了,超舒服方便
    god7d
        64
    god7d  
       352 天前
    @sadfQED2 额,一般项目中专业术语比较多的话,最好统一出一份文档,如果存在国际市场的话,最好还是使用英文术语
    3dwelcome
        65
    3dwelcome  
       352 天前
    @kalista 我们现在所有的源代码,都是要经过预编译和转译的管道。

    就是 clang 去编译的代码文件,和人类改写的源代码,完全是两个不同文件,就不存在编码冲突问题。
    nekoneko
        66
    nekoneko  
       352 天前
    java 后端.
    岂止枚举, 我对不好翻译的变量直接上中文.
    比如需要老长一段描述的 map
    jhdxr
        67
    jhdxr  
       352 天前
    1. 要切换输入法。这个阻碍其实不小,有时候注释也用英文写就是切换输入法太麻烦
    2. 中文的表示不唯一。这个在过去指的更多的是不同编码,例如 gbk/utf-8 。现在的话还有各种异形字
    3. 如果有国际化的团队,那在非中文环境中打开可能会有问题。


    如果你是一个人写怎么爽怎么来;一个团队写就看看团队规范。
    Building
        68
    Building  
       352 天前 via iPhone
    中英文啥的都是小事,主要是割裂感,一会儿中文一会儿英文的,建议先把关键词全部 typedef 成中文
    sqlNice
        69
    sqlNice  
       352 天前
    我之前遇到过有大量表单填写的场景, 表单内容只针对前端回显用, 后端并没有用到. 并且表单字段名称比较长 库类型及版本 /信息化系统软件运维公司 /搬迁后是否保留业务网络出口 等. 就全部使用了中文作为 key
    IvanLi127
        71
    IvanLi127  
       352 天前
    这种情况,建议使用易语言。

    第一,不会有任何人反对;
    第二,不会有任何人反感。
    paledream
        72
    paledream  
       352 天前
    我觉得没问题,对复杂的一些业务名词,用中文其实更容易维护,写和读时省去了翻译。
    现在都是用 utf-8 ,也没遇到过编码问题,尤其 op 应该是前端场景,本来就要去展示中文。

    可以看下本人写的枚举值维护小工具,覆盖了业务开发中常见的枚举值使用的场景: https://github.com/xliez/x-enum
    yanqing07
        73
    yanqing07  
       352 天前
    如果系统要支持多语言。
    直接用中文做 key ,再指向其他语言的翻译(例,英语),好像也没什么问题。。。
    MoRanjiang
        74
    MoRanjiang  
       352 天前 via Android
    反对拼音,但是中文我觉得可以,尤其是根本没有英文版本的软件,没必要想下这个功能英文怎么说
    skydiver
        75
    skydiver  
       352 天前
    @sghwn2 UTF-8 编码,一个中文是三个字节
    skydiver
        76
    skydiver  
       352 天前
    中文可以用,但是 IDE 自动补全不带拼音补全,写的时候比较麻烦。不能补全就要经常切换输入法,更麻烦。
    akira
        77
    akira  
       352 天前
    没啥问题 你们内部统一就行 。 同时出了问题 你需要能解决。
    shelken
        78
    shelken  
       352 天前 via iPhone
    @butanediol2d 同问 ide 是什么?还有主题配色方便告诉下吗?
    butanediol2d
        79
    butanediol2d  
       352 天前   ❤️ 1
    @shelken #78 编辑器 Sublime Text ,代码补全 LSP + sourcekit-lsp ,主题是 ayu
    searene
        80
    searene  
       352 天前
    在很多情况下,用中文甚至还优于英文,因为用词统一、易懂。
    nexo
        81
    nexo  
       352 天前
    @Leviathann 为啥.... enum 有的功能 普通 literal 无法实现啊
    natsukage
        82
    natsukage  
       352 天前   ❤️ 6
    明明楼里说的只是枚举,怎么没几楼就冒出变量名警察方法名警察甚至易语言警察来了。

    大家写日常业务多了觉得大多数日常行为比如顾客下单之类的可以很容易用英文表达这我能理解,但是也有很多特殊的场合,比如游戏开发时候角色身上的状态啊之类的,毒=poison 什么的还好说,什么三分归元气之类乱七八糟的枚举,全都用英文简直不要太折磨了。
    我觉得变量名尤其是枚举应该做到信达雅,如果不可兼得的话,那信达肯定比雅更重要。枚举经常是很多枚举出现在一起甚至一个 switch 结构里密密麻麻挤了很多枚举,这时候我肯定希望一眼就能区分出每个 case 对应什么,而不是鼠标悬浮上去一个一个看定义

    if(player.status.连续咏唱 && player.status.凤凰燃烬增幅)

    之类的可比

    if(player.status.dualCast && player.status.phoenixAshesBoost)

    可读性高多了。
    尤其是有一些日系要素游戏,比如 status.神楽舞,你觉得写成英文应该是怎样的,kaguraMai ?但是这实际上是罗马音,这还不如用拼音…
    thinkershare
        83
    thinkershare  
       352 天前
    将本地化的东西编码到代码中本身就是缺陷。
    fuwu1245
        84
    fuwu1245  
       352 天前
    我想知道用中文来做 key 是不是会有技术上潜在的问题?
    遇到过项目中有中文 key 的情况,但没遇到过问题
    从可读性角度上讲,中文可读性更好,而且翻译成可读性好的英语的话,长度要长不止一倍
    pkoukk
        85
    pkoukk  
       351 天前
    语言支持 UTF8 的话我觉得没问题
    但我不会用,因为切输入法太麻烦了,而且影响 copliot 帮我写代码
    hstdt
        86
    hstdt  
       351 天前 via iPhone
    唯一一次中文枚举用在了省份上,要用自定义顺序
    Chinsung
        87
    Chinsung  
       146 天前
    @natsukage 就你是个正常人,明明说枚举,一堆人在那鬼扯语法和方法中文警察,在国内环境,大部分术语你强行翻译成英文,可读性反而更差,更何况不是每个人的英文水平都支持准确翻译,同样一个词你去百度翻译,我去谷歌翻译,出来的英文就可能完全不一样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4893 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:11 · PVG 09:11 · LAX 18:11 · JFK 21:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.