0

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

 1 year ago
source link: https://www.v2ex.com/t/931494
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  问与答

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

  Hbisedm · 13 小时 33 分钟前 · 4310 次点击

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

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

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

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

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

82 条回复    2023-04-12 00:20:18 +08:00
f6x

f6x      13 小时 20 分钟前

请使用易语言, 哼哼哈嘿
mineralsalt

mineralsalt      13 小时 19 分钟前

可以写中文, 不会出 bug, 而且枚举写中文的好处也多, 比如你这个例子在前端显示的时候可以直接返回 .name() , 省得再转换一遍了, 又省事又容易理解, 唯一不好的可能是有些人觉得 low 吧
Leviathann

Leviathann      13 小时 16 分钟前   ❤️ 4

坏处就是要切输入法

不过 ts 的 enum 不要用,直接用 object literal
sghwn2

sghwn2      13 小时 0 分钟前

一个中文占两个字节,一个英文字母占一个字节,编出来的代码会大一点
hervey0424

hervey0424      12 小时 58 分钟前

不管是 ts 还是 C#, 枚举我基本都是用中文的, 感觉很好用
Hbisedm

Hbisedm      12 小时 55 分钟前

@sghwn2 打包后,ts 定的这些中文不就没了吗,编码阶段这些字节大小影响不大吧
mineralsalt

mineralsalt      12 小时 53 分钟前   ❤️ 4

@sghwn2 #4 你这个说法其实不对, 有时候中文两个字就能表达意思, 而对应的英文 4 个字节可打不住
sadfQED2

sadfQED2      12 小时 39 分钟前 via Android   ❤️ 1

确实没什么不好,很多专业术语真的很难翻译成英文,10 个人翻译出 10 种不同的,还不如写中文。

为啥我不写中文,因为逼格不够,写出来的代码不好意思提交
Trello

Trello      12 小时 39 分钟前

@Leviathann ts 的枚举有啥问题嘛?为啥不建议使用呢?
cmdOptionKana

cmdOptionKana      12 小时 37 分钟前   ❤️ 1

技术上没问题, 但有人觉得中文很 low, 然后就找些乱七八糟的借口来挑刺.

上面已经出现这种人, 下面还会有样本陆续提供.
qsnow6

qsnow6      12 小时 36 分钟前

tuchg

tuchg      12 小时 35 分钟前   ❤️ 3

可以了解下我开发的项目 目前调用中文的时候可以通过拼音 /五笔等方式调用,很方便,完全不需要输入法参与和英文一致的调用体验,在需要写中文时还需切换不过社区已有内嵌输入法的实践,能很好解决这个问题,欢迎体验

https://github.com/tuchg/ChinesePinyin-CodeCompletionHelper
@Leviathann
tuchg

tuchg      12 小时 30 分钟前

中文在现代完全没有技术支持上的问题,更多的是一种来自 international 的偏见
DeltaC

DeltaC      12 小时 24 分钟前

如此中文编程,我十分支持。
beimenjun

beimenjun      12 小时 19 分钟前

自己爱怎么写怎么写,如果是团队开发你能说服一个团队按照这个规范写就行。

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

如果你英文命名很困难,要不然还是问问 ChatGPT 吧。
masterclock

masterclock      12 小时 14 分钟前

最大的问题是要切换输入法,实在太麻烦了
beimenjun

beimenjun      12 小时 12 分钟前

zG96P804.jpeg
iseki

iseki      12 小时 4 分钟前

主要是切输入法有点烦,不过真要是不好翻译,就用全拼吧,这种地方非 ASCII 兼容字符尽量不要用,Unicode 太复杂,容易出问题
tuchg

tuchg      11 小时 48 分钟前

@iseki 全拼有多音歧义,而且阅读起来会很难受还不如英语 不如一步到位直接中文多直观 unicode 现在应该几乎没有语言不支持了 emoji 都有拿来用的何况说中文
HENQIGUAI

HENQIGUAI      11 小时 45 分钟前

团队里没有外国人的情况下,当然可以用中文。
duke807

duke807      11 小时 43 分钟前 via Android   ❤️ 1

中文有很多字很接近甚至完全一样,但是它们的编码不同,而且不像 ASCII 很容易排除
butanediol2d

butanediol2d      11 小时 43 分钟前

试了一下,好像还挺爽的( x

lEbbVx4.png
pcmgr456

pcmgr456      11 小时 29 分钟前 via Android

写中文好,毕竟国内的开发人员英文太烂了,而且很多都是中国特色的名字也不好翻译成英文,直接写中文是坠吼的
paopjian

paopjian      11 小时 10 分钟前

没什么问题,我现在就怕编码问题,有些服务器里的 vim 用的还是 ascii,结果就是如果在服务器上用 vim 临时改代码,会导致代码里的中文错误,恶心死我了
kdwnil

kdwnil      11 小时 9 分钟前 via Android

没有好不好只有合不合适,只要一块写代码的都看得懂,用中文又没什么坏处,如果身边都看不懂中文还要强行用那才是不合适。用中文麻烦点的可能就是未来要搞 i18n 时会费点时间
kdwnil

kdwnil      11 小时 4 分钟前 via Android

另外用中文看不懂至少还能上翻译,那些硬要用拼音首字母还要混搭拼音和英语单词做名字的才是真正的邪恶混沌
yaphets666

yaphets666      11 小时 3 分钟前

不合适,英文是世界通行语言,不会就去学
nothingistrue

nothingistrue      11 小时 1 分钟前

现实交流当中,中英混合是要被打的。你要编写的是不打算交流的代码,那随便搞。如果是编写的会有其他人看的代码,那么就不要干中英混合这种不尊重人的事。
3dwelcome

3dwelcome      10 小时 58 分钟前

以前一直把中文翻译到英文,用英文变量,为了和国际化接轨。

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

想通后,我就全部改成中文编程了。早期发过类似帖子,可惜进水深火热了 t/795055
jmc891205

jmc891205      10 小时 55 分钟前

只要你确定未来不会有外国人看这块代码,那没啥问题
3dwelcome

3dwelcome      10 小时 54 分钟前

@nothingistrue 中文变量只在业务向代码里用,又不是用在基建代码。

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

写英文代码注释还需要过一下脑子。写中文注释脑子都不需要过。
Hbisedm

Hbisedm      10 小时 48 分钟前

@3dwelcome 对,不是开源的情况下,做业务的话,这种写法真的快,而且维护性挺高的
iseki

iseki      10 小时 46 分钟前 via Android

@tuchg Unicode 很复杂,很容易出现看上去一样但比较字符就是不一样的情况,容易出事
sghwn2

sghwn2      10 小时 43 分钟前

@Hbisedm 我不太懂 ts ,但是不管是中文还是英文,底层总要有一个地方编码存储吧,给英文字符编码就是一个字节的空间,中文的话可能就长一点
litchinn

litchinn      10 小时 40 分钟前

所有环境同一个编码的话我觉得就没啥问题
dqzcwxb

dqzcwxb      10 小时 27 分钟前

只要是 Unicode 就没有问题,都 Unicode 也不存在所谓的性能问题
mxT52CRuqR6o5

mxT52CRuqR6o5      10 小时 24 分钟前

@Hbisedm const enum 能优化掉,非 const enum 会编译成 object
mxT52CRuqR6o5

mxT52CRuqR6o5      10 小时 23 分钟前

但说实话我觉得没啥,团队能接受就行,编程语言支持 unicode 作为变量名 /属性名就是允许你去做这种事的
mxT52CRuqR6o5

mxT52CRuqR6o5      10 小时 20 分钟前

至于编码问题的话,web 早就 all in unicode 了,很难想象现在开发 web 还能碰到编码问题
Hbisedm

Hbisedm      10 小时 14 分钟前

@mxT52CRuqR6o5 确实 const enum 优化掉了, 感谢大佬指点
shenlanAZ

shenlanAZ      9 小时 55 分钟前

其实你可以 把类名,方法名都用中文写
chrosing

chrosing      9 小时 43 分钟前

@butanediol2d 你这是什么 IDE 呀。挺好看的
kangyue9999

kangyue9999      9 小时 43 分钟前

@sghwn2 不会吧,这个如果不输出只是内部枚举的话,编译器应该会自动替换成随机的 ascii 码吧
kangyue9999

kangyue9999      9 小时 39 分钟前

@butanediol2d 你这中文化不纯粹,应该是
引入 基础

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

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

大括号完

测试 小括号 点 。。。。。
zzz2021zzz

zzz2021zzz      9 小时 39 分钟前

没啥问题啊,还可以加上儿化音,顾客儿下单儿,老板儿接单儿,读得时候还可以用川普读
LifStge

LifStge      9 小时 22 分钟前

没啥问题 不过就是得注意编码统一 先不说上面说的 unicode 的一些问题
举个容易出现的问题 比如不配置好编码 用 vscode 打开 经常容易出现 中文变乱码的问题 默认是 utf8 处理了
配置好就行了 要注意其他工具编辑啥的处理 也容易出现类似 别一个不留神 没发现 导致意外错误就不好了.
vuevue

vuevue      9 小时 21 分钟前

不考虑偏码转换的是可以
fournoas

fournoas      9 小时 17 分钟前

其实不用切输入法,按下".",剩下的交给 IDE 自动补全
8355

8355      8 小时 58 分钟前

不是 low 不 low 的问题
如果其他人都是用英文 应该统一英文,方便理解包括变量名之类的就都是英文,你用中文割裂感是客观存在的
其次英文可以写中文注释并不需要纠结可维护性之类的问题
leeyuzhe

leeyuzhe      8 小时 53 分钟前

主要是切换输入法太痛苦了
butanediol2d

butanediol2d      8 小时 51 分钟前

@chrosing #44 就是个编辑器,Sublime Text

@kangyue9999 #46 🤣认真点说的话,补全的东西不需要自己打,所以可以用中文,其他的要自己打,切换输入法还挺麻烦,除非括号什么的都用全角。
kalista

kalista      8 小时 47 分钟前

我在代码里面不爱用中文的原因是之前公司写 cpp 的时候被编码烦到了,可能是菜的原因
luzemin

luzemin      8 小时 45 分钟前

团队共识就行,编程风格统一就行
tuchg

tuchg      8 小时 45 分钟前

@butanediol2d 这些都不是问题 都能用 IDE 插件解决
zidian

zidian      8 小时 44 分钟前

好得很。爽得很。

要是团队里有不识中文的外国人,要写英文的地方多了去了何止枚举这点东西
JavenXiao

JavenXiao      8 小时 12 分钟前

需要切换输入法 +1 ,这点真的是很羡慕英语母语国家的程序员
wangsd

wangsd      8 小时 11 分钟前

恨不得变量都用中文写,有的英文都不知道怎么翻译。
devloperchen

devloperchen      8 小时 3 分钟前

@beimenjun 你这个 chatgpt 界面是自己开发的还是用开源项目搭建吗?我看到我老婆公司搭建的 chatgpt 平台和你这个很想。我们公司做的很简陋。
uni

uni      7 小时 51 分钟前

我从来都是这么写的啊,输入法只需要在写 enum 的时候切,用的时候全部用补全就行了
这么写的好处除了清晰之外,还有一点就是前端写页面的时候直接用 enum 取个值就可以拿到标签了,超舒服方便
god7d

god7d      7 小时 23 分钟前

@sadfQED2 额,一般项目中专业术语比较多的话,最好统一出一份文档,如果存在国际市场的话,最好还是使用英文术语
3dwelcome

3dwelcome      7 小时 6 分钟前

@kalista 我们现在所有的源代码,都是要经过预编译和转译的管道。

就是 clang 去编译的代码文件,和人类改写的源代码,完全是两个不同文件,就不存在编码冲突问题。
nekoneko

nekoneko      6 小时 39 分钟前

java 后端.
岂止枚举, 我对不好翻译的变量直接上中文.
比如需要老长一段描述的 map
jhdxr

jhdxr      6 小时 15 分钟前

1. 要切换输入法。这个阻碍其实不小,有时候注释也用英文写就是切换输入法太麻烦
2. 中文的表示不唯一。这个在过去指的更多的是不同编码,例如 gbk/utf-8 。现在的话还有各种异形字
3. 如果有国际化的团队,那在非中文环境中打开可能会有问题。


如果你是一个人写怎么爽怎么来;一个团队写就看看团队规范。
Building

Building      6 小时 6 分钟前 via iPhone

中英文啥的都是小事,主要是割裂感,一会儿中文一会儿英文的,建议先把关键词全部 typedef 成中文
sqlNice

sqlNice      5 小时 50 分钟前

我之前遇到过有大量表单填写的场景, 表单内容只针对前端回显用, 后端并没有用到. 并且表单字段名称比较长 库类型及版本 /信息化系统软件运维公司 /搬迁后是否保留业务网络出口 等. 就全部使用了中文作为 key
IvanLi127

IvanLi127      5 小时 8 分钟前

这种情况,建议使用易语言。

第一,不会有任何人反对;
第二,不会有任何人反感。
paledream

paledream      3 小时 53 分钟前

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

可以看下本人写的枚举值维护小工具,覆盖了业务开发中常见的枚举值使用的场景: https://github.com/xliez/x-enum
yanqing07

yanqing07      3 小时 11 分钟前

如果系统要支持多语言。
直接用中文做 key ,再指向其他语言的翻译(例,英语),好像也没什么问题。。。
MoRanjiang

MoRanjiang      3 小时 6 分钟前 via Android

反对拼音,但是中文我觉得可以,尤其是根本没有英文版本的软件,没必要想下这个功能英文怎么说
skydiver

skydiver      3 小时 6 分钟前

@sghwn2 UTF-8 编码,一个中文是三个字节
skydiver

skydiver      3 小时 4 分钟前

中文可以用,但是 IDE 自动补全不带拼音补全,写的时候比较麻烦。不能补全就要经常切换输入法,更麻烦。
akira

akira      3 小时 0 分钟前

没啥问题 你们内部统一就行 。 同时出了问题 你需要能解决。
shelken

shelken      2 小时 4 分钟前 via iPhone

@butanediol2d 同问 ide 是什么?还有主题配色方便告诉下吗?
butanediol2d

butanediol2d      1 小时 33 分钟前   ❤️ 1

@shelken #78 编辑器 Sublime Text ,代码补全 LSP + sourcekit-lsp ,主题是 ayu
searene

searene      1 小时 28 分钟前

在很多情况下,用中文甚至还优于英文,因为用词统一、易懂。
nexo

nexo      1 小时 8 分钟前

@Leviathann 为啥.... enum 有的功能 普通 literal 无法实现啊
natsukage

natsukage      33 分钟前

明明楼里说的只是枚举,怎么没几楼就冒出变量名警察方法名警察甚至易语言警察来了。

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

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

之类的可比

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

可读性高多了。
尤其是有一些日系要素游戏,比如 status.神楽舞,你觉得写成英文应该是怎样的,kaguraMai ?但是这实际上是罗马音,这还不如用拼音…

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK