Hbisedm
V2EX  ›  问与答

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

  •  
  •   Hbisedm · Apr 11, 2023 · 10215 views
    This topic created in 1303 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    大括号完

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

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

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

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


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

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

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

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

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

    之类的可比

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

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