大家对于中文变量名是如何看待的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
FakeLeung
V2EX    程序员

大家对于中文变量名是如何看待的?

  FakeLeung 2019-11-01 21:38:00 +08:00 31221 次点击
这是一个创建于 2170 天前的主题,其中的信息可能已经有所发展或是发生改变。

恕我愚昧,实在是不想翻译各种奇怪的名称了,直接用中文当作变量名简洁明了(对于我来说)

不知道大家如何看待中文变量名的?

317 条回复    2019-12-17 14:53:19 +08:00
1  2  3  4  
niuxuewei
    1
niuxuewei  
   2019-11-01 21:39:35 +08:00 via iPhone   47
你别说 这个代码格式配合中文变量名 还挺好看…
jipaidian
    2
jipaidian  
   2019-11-01 21:42:51 +08:00   1
适合自己的就是最好的
cmdOptionKana
    3
cmdOptionKana  
   2019-11-01 21:43:11 +08:00 via iPad   21
讲道理,非面向国际的开源项目,用中文利大于弊。不过很多人会有民族自卑感。
7sj525bL0Wy7FOx9
    4
7sj525bL0Wy7FOx9  
   2019-11-01 21:43:54 +08:00
求配色
viko16
    5
viko16  
   2019-11-01 21:44:52 +08:00 via Android   7
我觉得这种场景中就挺好的,想英文名反而难理解
blankme
    6
blankme  
   2019-11-01 21:45:05 +08:00 via Android   6
还不如用拼音呢,用中文切输入法得累死。。。
lxk11153
    7
lxk11153  
   2019-11-01 21:45:18 +08:00   1
没什么问题呀,比拼音首字母好多了
binbinyouliiii
    8
binbinyouliiii  
   2019-11-01 21:46:10 +08:00
不遇到还好,遇到编码问题就麻烦了
xctcc
    9
xctcc  
   2019-11-01 21:46:12 +08:00   2
你这个用中文确实好理解
z1s23
    10
z1s23  
   2019-11-01 21:48:04 +08:00 via iPhone   2
你这个确实难翻译,还别说,这样看去还挺工整,哈哈
secondwtq
    11
secondwtq  
   2019-11-01 21:48:04 +08:00   1
居然没人 @辣个蓝人
taogen
    12
taogen  
   2019-11-01 21:51:13 +08:00   1
还是按照规范来吧,变量名用英文。

你用中文,我用英文,他用日文。。。不乱套了吗?

某些场合可能不支持中文,或者需要配置才支持中文,如 vim,server terminal 等,可能导致乱码,或抛出异常。

建议读一下《 clean code 》
jin7
    13
jin7  
   2019-11-01 21:57:25 +08:00
看上去还不错
弄了个 中-->英 变量命名脚本
https://getquicker.net/Sharedaction?code=3682097b-a5cb-4293-67a2-08d71837d942
greatdancing
    14
greatdancing  
   2019-11-01 21:59:31 +08:00 via Android   1
中英文切换累死人
fhsan
    15
fhsan  
   2019-11-01 22:00:33 +08:00   3
没问题,只要清晰好维护就行。
JsonLee
    16
JsonLee  
   2019-11-01 22:03:06 +08:00 via iPhone
若非不是全中文,中英混合切输入法都累死;如果是全中文,真的要敲多好多次键盘。
xkzhangsan
    17
xkzhangsan  
   2019-11-01 22:03:09 +08:00
有可能会出现编码问题,比如乱码。
controller
    18
controller  
   2019-11-01 22:03:19 +08:00 via Android
写起来不方便,且,可能会有莫名其妙的错误,为避免踩坑,不推荐。。
ayase252
    19
ayase252  
   2019-11-01 22:10:55 +08:00
自动补全什么的可以识别吗?
Jirajine
    20
Jirajine  
   2019-11-01 22:13:03 +08:00 via Android
这种情况没问题,用中文对中文母语者来说可读性很高。
但一般情况,除了国际化,编码之外,用中文最大的问题是不好输入。
只要不用拼音和一些特别奇葩的缩写就好。
nemo95
    21
nemo95  
   2019-11-01 22:13:44 +08:00 via Android
这来回切输入法不是要疯了
linvaux
    22
linvaux  
   2019-11-01 22:22:30 +08:00
打!往死里打!
cmdOptionKana
    23
cmdOptionKana  
   2019-11-01 22:24:28 +08:00 via iPad   11
切换中英文是按一下 shift

而英文切换大小写是按一下 caplock 或按住 shift

如果上面这些中文改成英文,必然中间会需要转换大小写或增加下划线

结论是,中文变量名并没有增加按键次数。
ksedz
    24
ksedz  
   2019-11-01 22:24:57 +08:00   1
可读性真不错,有些比较专业的词与其看那些蹩脚的英语,不如中文变量
essicaj
    25
essicaj  
   2019-11-01 22:29:54 +08:00
这种情况如果用英文或者拼音,多多少少都要配上个注释才好读懂。加上注释的话,一旦发生变更,变量名一改注释也得跟着改。再加上注释会增大代码的行数,怎么都没有直接用中文的简洁。只是不知道 ide 对中文的支持到什么程度,包括像拼写错误提示、重构、输入提示可能都会失效
miaomiao888
    26
miaomiao888  
   2019-11-01 22:30:43 +08:00
可以,相当简洁明了
shily
    27
shily  
   2019-11-01 22:35:36 +08:00 via Android
@linvaux 不是拉出去弹死?
FakeLeung
    28
FakeLeung  
OP
   2019-11-01 22:37:02 +08:00
@binbinyouliiii #8
我是看过了,webpack 打包后,不会有中文的,全部变成了 abcd。
FakeLeung
    29
FakeLeung  
OP
   2019-11-01 22:38:35 +08:00
@niuxuewei #1
@LionXen #4

vscode 的 palenight theme.
FakeLeung
    30
FakeLeung  
OP
   2019-11-01 22:39:35 +08:00   4
@ayase252 #19
有的

FakeLeung
    31
FakeLeung  
OP
   2019-11-01 22:41:27 +08:00   1
@nemo95 #21
@blankme #6
其实切换也就按 caps 一下而已,比 shift+-要快多了。
shiji
    32
shiji  
   2019-11-01 22:50:23 +08:00   1
我觉得你这种情况用中文变量名非常合适。
loading
    33
loading  
   2019-11-01 22:50:39 +08:00 via Android
知足吧,你还没见过拼音,不对,拼音首字母的。
robinchina
    34
robinchina  
   2019-11-01 22:52:35 +08:00   10
挺好的。恕我直言,有多少程序是面向国际的?
blankme
    35
blankme  
   2019-11-01 23:11:30 +08:00 via Android
@FakeLeung
混编的时候需要时刻注意输入法状态,不然会出现各种状况,比如移动光时标输入法出中文,标点全角半角错误。

用 markdown 写文字的时候这种情况最明显,不胜其烦。

当然可能用的输入法不同,所以体验有差异。
secsilm
    36
secsilm  
   2019-11-01 23:14:18 +08:00 via Android
能行,有时候遇到实在不好翻译的时候我就用拼音
maomaomao001
    37
maomaomao001  
   2019-11-01 23:15:38 +08:00
就算不知道,你谷歌翻译都行写个英文,实在不行,写拼音都比这个强,
你这个完全吧 ide 的自动补全都稿废了,而且还要切换
chendy
    38
chendy  
   2019-11-01 23:16:19 +08:00
拼音就够用了
输入中文要切换输入法 /切换中英文,提示虽然有但是有点残
比如 应收工程款,用拼音的话,打 yS 基本就出来了
FakeLeung
    39
FakeLeung  
OP
   2019-11-01 23:32:40 +08:00   1
@maomaomao001 #37
vscode 其实能识别的。
mamahaha
    40
mamahaha  
   2019-11-01 23:39:33 +08:00
你这个函数也太大了吧,段落倒是挺工整的,这个风格也太让人无语了。
AV1
    41
AV1  
   2019-11-01 23:40:48 +08:00   1
这是 Javascript 吧,那就没问题了,不用在意上面那些“编码问题”,反正打包之后一个样。
FakeLeung
    42
FakeLeung  
OP
   2019-11-01 23:41:01 +08:00
@mamahaha #40
没办法啊,要计算的东西真的有这么多,这还是只有 2 处地方用到。。。
Jirajine
    43
Jirajine  
   2019-11-01 23:44:41 +08:00 via Android   1
@blankme 我用的 rime,一般这种情况可以直接强制全局英文标点,但快捷键有些还会有问题。
现代工具对 Unicode 支持性以及相当良好了,混编最大的问题还是输入不便。
还是那句话,用中文虽然糟糕,但也绝对比拼音和奇葩缩写高到不知哪里去了。
loqixh
    44
loqixh  
   2019-11-01 23:52:32 +08:00   2
中文变量名信息量比英文大得多, 可以免除绝大部分注释和文档, 那些说切换麻烦的怕不是现在输入法, 不能设置中文状态输入英文标点
FakeLeung
    45
FakeLeung  
OP
   2019-11-02 00:01:29 +08:00
@DOLLOR #41
是的,其实我特意看过打包后的代码,因为这些都是局部变量,所以可以被混淆,如果是作为对象的 key 就无法被混淆,就可能出现问题。
secondwtq
    46
secondwtq  
   2019-11-02 00:06:49 +08:00   1
王垠前两天发了两条微博,大谈特谈”汉字拉丁化“的问题,认为非拼音文字都是”落后“的东西,并且顺便扣了很多帽子。

我的观点:一,王垠在 PL 之外的言论还是随便看看随便笑笑;二,开微博对于王垠来说也是错误的选择

不过换到楼主的问题,汉语没有一个易认的 Romanization 表示,确实导致不得不面对这种境,这大概是王垠的观点唯一站得住脚的场景
要做的话技术上也有难度 ... 因为亲身体验是,不仅对付输入法麻烦,就算是一段话里面频繁出现 Diacritical mark 也很麻烦 ... 更扯淡的是,三个桌面系统的中文输入法都差不多,但是输入 diacritical mark 的方式都不一样
gavindexu
    47
gavindexu  
   2019-11-02 00:27:04 +08:00 via iPhone
命名时就是 this 和 last 的关系……
这个变量不难命名啊
McContax
    48
McContax  
   2019-11-02 00:30:23 +08:00 via iPhone   1
习惯英文命名每次变量名都会花很多时间去构思,不用赶进度还好,赶进度就很 jb 烦,命名这种没有标准答案,不要用 123 abc 这种草草应对的变量名就好,避免踩坑最好确认用的编程语言对中文的支持程度

@secondwtq 这个人我也没怎么关注过,但是非拼音文字落后这种说法实在不能苟同,中文是世界上少有的 speaking system 和 writing system 分离的语言,就上手而言绝对比英文和法语之类的难,英文是能说就能写,但是中文需要额外支配资源来建立读音和图像的连结,这也是很多国人学英文单词总拼错的原因之一,这也是为什么很多外国电视台和视频不提供 subtitle 的原因,因为英语中你听到了你就知道了,而中文模式下的理解你需要听到再加上看到才能理解(用数据库的说法来解释就是在 select 的时候 when 语句要带两个条件,才能匹配出唯一值,只带读音或者图像其中一个只能匹配同音字或者同字不同音),但是这并不是说中文就是落后的就是过时的,正如游戏一样,越是复杂的游戏游玩系统在上手之后的可玩性就会越强,中文学习只要能跨过那段艰难的学习期其实一切都还是挺光明的。
anguiao
    49
anguiao  
   2019-11-02 00:49:09 +08:00 via Android
我觉得没什么问题,只要看起来清晰明了就行。
不过上面有一个说得还是有道理的,汉字命名确实不利于补全。
laike9m
    50
laike9m  
   2019-11-02 00:52:49 +08:00 via Android
that's fine
miyuki
    51
miyuki  
   2019-11-02 01:12:25 +08:00 via Android
真要图一乐还得图一乐

自己喜欢就完事了,名字太长的时候我也愿意用汉字
kokutou
    52
kokutou  
   2019-11-02 01:15:25 +08:00
没有输入法的时候。。。。
paopjian
    53
paopjian  
   2019-11-02 01:18:38 +08:00 via Android   1
自己写可以接受,对于那些强制 UTF8 编码的语言也不会出现编码问题,但是要是跨平台多编码的情况得特别小心。
ericgui
    54
ericgui  
   2019-11-02 02:26:38 +08:00
代码里不要用中文,实在需要,搞个翻译包
mozutaba
    55
mozutaba  
   2019-11-02 02:48:41 +08:00   2
中文可以等宽,这点很爽。比如长宽高等,英文 long 就挂了
zjsxwc
    56
zjsxwc  
   2019-11-02 06:34:26 +08:00 via Android   1
不喜欢中文编程,
由于编码不一致( vim 配置不一致,Linux 看 Windows 的 gbk 汉字等等),会碰到被删了半个汉字的情况
zjsxwc
    57
zjsxwc  
   2019-11-02 06:46:06 +08:00 via Android   2
小写拼音首字母+汉字 可以作为折中的办法,

比如 "bqfkbl 本期付款比例" "bzwchtngck 班组完成合同内工程款"

解决了想名字难,又解决了编码时输入难的问题。
xuanwu
    58
xuanwu  
   2019-11-02 06:53:54 +08:00
@jin7 将标识符批量中翻英的 VSC 插件: https://github.com/program-in-chinese/vscode_english_chinese_dictionary

@cmdOptionKana 的确切换(shift)不一定更多。而且最近有时输入英文时不切换输入法,直接在中文输入状态下输入,还有点单词联想的感觉,比如搜狗下’inp’就有”input“。

@blankme 一般在编程时,我就切换输入法设置到”中文输入下使用英文标点“。

@FakeLeung form 下的是改不了吗?”in_fact_“读起来实在是。。。
xuanwu
    59
xuanwu  
   2019-11-02 07:24:42 +08:00
@mozutaba 赞,等宽这个之前还没意识到。刚加到这里了《在代码中进行中文命名(类 /变量 /方法等)的优势》: https://zhuanlan.zhihu.com/p/40098652
masker0817
    60
masker0817  
   2019-11-02 07:29:19 +08:00 via Android
我能说这些都不是很偏僻的词汇,其实是写的人英文不好的缘故吗?
binux
    61
binux  
   219-11-02 07:36:20 +08:00   17
源代码比起机器看得懂,让人看得懂更重要。
比起让别人看得懂,让自己看得懂更重要。
比起让外国人看得懂,让你的同事看得懂更重要。

在实现同样功能前提下,能让人很容易看懂的代码就是好代码。
打字速度慢?一个项目能有 20% 时间花在编码上吗?
zazalu
    62
zazalu  
   2019-11-02 07:59:03 +08:00 via Android   2
比那些又臭又长还不懂啥意思的变量名好多了
sl0000
    63
sl0000  
   2019-11-02 08:05:07 +08:00
经济学术语用英语真的是为难我等猿呀
a1562619919
    64
a1562619919  
   2019-11-02 08:24:38 +08:00 via Android
@masker0817 漏了,看的人也不一定足够好
TangMonk
    65
TangMonk  
   2019-11-02 08:31:41 +08:00 via iPhone   1
挺好的,有些很难翻译的我也用中文变量,这个时候反而更简洁易懂。
meetguardian
    66
meetguardian  
   2019-11-02 08:40:07 +08:00 via iPad
好是好,到真是在线上这么搞我是不敢 逃
goodlg
    67
goodlg  
   2019-11-02 08:48:19 +08:00 via Android
还是主流一点吧,不要这样命名,如果力求易懂,写好注释就可以,不管怎么说,自己喜欢就这样吧,自己看着舒服就好。
askfilm
    68
askfilm  
   2019-11-02 08:49:51 +08:00   1
@FakeLeung 非常好!清晰易懂, 带给我很大的启示,打破思维禁锢。 另外汉字的表意完爆英文, 发挥的空间更大了
lwh0328
    69
lwh0328  
   2019-11-02 08:53:05 +08:00 via iPhone
什么编辑器呀
ThomasZ
    70
ThomasZ  
   2019-11-02 09:00:47 +08:00
以前编译器中文变量编译不过, 于是就习惯了拼音[doge]
zachlhb
    71
zachlhb  
   2019-11-02 09:04:52 +08:00 via Android
不推荐,会遇到各种问题,再者翻译一些也不难的,另外不会写注释吗
ikw
    72
ikw  
   2019-11-02 09:06:52 +08:00 via iPhone   7
进来之前是准备喷的,你这一张图片整得我不好开口了…
Hurriance
    73
Hurriance  
   2019-11-02 09:08:09 +08:00   1
楼主这样的中文命名很规范啊!学到了学到了
orzorzorzorz
    74
orzorzorzorz  
   2019-11-02 09:12:34 +08:00   2
本来进来准备看 v 众如何花式反对,但看了这张图我才发现,不是中文变量不好,是我见过的中文变量不够专业。讲道理,如果是这样的中文变量,跟规范不冲突我是一万个愿意的。
loqixh
    75
loqixh  
   2019-11-02 09:15:19 +08:00
@masker0817 英文的固有缺陷, 不过有些人是不会承认的, 反而是为了省个字母缩写变成了所谓的 unix 哲学
realpg
    76
realpg  
PRO
   2019-11-02 09:25:09 +08:00   2
@zachlhb #71
大胸弟,就图里这些你翻译一下试试,翻译完再找个同事阅读看能理解不
skiy
    77
skiy  
   2019-11-02 09:26:41 +08:00
为什么就没有人发明拼音文输入法呢?带声调的。
中文的话,服务器如果不配置一下,打开会乱码。且打码时切换输入法很不方便啊。
chensuiyi
    78
chensuiyi  
   2019-11-02 09:26:43 +08:00   1
开始用中文写代码。
musi
    79
musi  
   2019-11-02 09:34:49 +08:00 via iPhone
在代码理解方面来说,中文的利大于弊,特别是一些专有名词,程序员还得一个一个查词典?但在程序运行方面来说,中文的弊大于利,编码就是个问题
ljspython
    80
ljspython  
   2019-11-02 09:39:56 +08:00   1
居然还挺好看
DefoliationM
    81
DefoliationM  
   2019-11-02 09:40:36 +08:00 via Android
看着就累。打中文比英文多打好多键呢
love
    82
love  
   2019-11-02 09:42:39 +08:00
@realpg 这些都是专业名词吧,本身就不会很多,公司出个对照表让大家按上面的命名别自己发明不就行了
zachlhb
&bsp;   83
zachlhb  
   2019-11-02 09:43:09 +08:00 via Android
@realpg 我又不是没翻译过,再说注释是干嘛的
realpg
    84
realpg  
PRO
   2019-11-02 09:49:09 +08:00   1
@zachlhb #83
你怕是没写过大型财务系统 每次引用变量都注释一下?还是回去翻注释定义 还是把字典打印出来放手头
Leigg
    85
Leigg  
   2019-11-02 09:52:50 +08:00 via Android   1
难的是说服你以外的人。
lovestudykid
    86
lovestudykid  
   2019-11-02 10:03:04 +08:00
英文没有空格就是不如中文容易看懂,信息密度就是没有中文高,再加上大多数中国人浏览英文的速度总是不如中文快。主要的阻碍就是输入速度了。
zhanao1994
    87
zhanao1994  
   2019-11-02 10:05:15 +08:00 via Android   1
我觉得挺好的
Maxwells8
    88
Maxwells8  
   2019-11-02 10:07:10 +08:00   1
中文命名可以做到词等宽,所以排版会更整齐
fpure
    89
fpure  
   2019-11-02 10:11:10 +08:00 via Android   1
有一说一,效果还不错
zachlhb
    90
zachlhb  
   2019-11-02 10:22:47 +08:00 via Android
@realpg 你用的什么编辑器?现在编辑器都可以直接提示定义变量时写的规范注释
cmdOptionKana
    91
cmdOptionKana  
   2019-11-02 10:28:22 +08:00   2
@lovestudykid 输入速度中文反而是优势,首先按键次数不会增加,然后自动补全也是有的,不仅编辑器有补全,中文输入法本身也有补全。
redbuck
    92
redbuck  
   2019-11-02 10:29:03 +08:00 via Android
webpack 可能没问题,但是 git 以及 git 生态里的工具可能会出问题,遇到过某个同事用的 diff 工具把源码里的中文都变乱码还提交的
weixiangzhe
    93
weixiangzhe  
   2019-11-02 10:29:53 +08:00 via Android
打包后是 abcd 啊,冲这句 我之后也要试试
vipppppp
    94
vipppppp  
   2019-11-02 10:57:34 +08:00
这是我见过最好看的中文变量编程了
但我还是不会用,感觉切输入法也麻烦还有就是在一些终端上不额外安装东西不支持中文字符。。。
iugo
    95
iugo  
   2019-11-02 11:18:37 +08:00
我可以接受.

我在项目初期没有找到合适专业词汇的时候也会写中文变量名. 后面命名统一后会改.
bumz
    96
bumz  
   2019-11-02 11:19:46 +08:00 via iPhone   1
私以为,楼主这种情况需要的不是变量
而是字典
FakeLeung
    97
FakeLeung  
OP
   2019-11-02 11:55:02 +08:00
@weixiangzhe #93
一定要是局部变量,而且不能是对象键名。
FakeLeung
    98
FakeLeung  
OP
   2019-11-02 11:55:52 +08:00
@bumz #96
不太懂什么叫字典。
liuzhiyong
    99
liuzhiyong  
   2019-11-02 11:58:45 +08:00 via Android
我觉得不错,可读性非常好。读代码的时间一般大于写代码的时间,个人觉得可读性更重要。然后我遇到这种情况一般是拼音。
hubqin
    100
hubqin  
   2019-11-02 12:32:24 +08:00   1
以前用过百度的 API,返回的数据,KEY 就是用中文,对于一些名字,翻译后反而不知道十个啥,还是直接中文好。
1  2  3  4  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2485 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 31ms UTC 15:31 PVG 23:31 LAX 08:31 JFK 11:31
Do have faith in what you're doing.
ubao 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