恕我愚昧,实在是不想翻译各种奇怪的名称了,直接用中文当作变量名简洁明了(对于我来说)
不知道大家如何看待中文变量名的?
201
xuanwu 2019-11-03 20:37:53 +08:00
@nanjia 可以的. 之前写的 spring 的前后端使用中文命名演示: https://zhuanlan.zhihu.com/p/31417833
@cpdyj0 关于输入, 并非想象中的那么烦. 见 #23 #44 #58 |
202
ipwx 2019-11-03 20:49:01 +08:00
|
203
xuanwu 2019-11-03 21:00:53 +08:00
@ipwx #202 n_max_rows => 最大行数 n_cols => 列数 batch_size => 批量
readability 是蛮主观的东东, 反正自己和同事看着顺眼最大 |
204
xuanwu 2019-11-03 21:17:22 +08:00
@FakeLeung 刚注意到高亮的一个问题, return 的数组里那些量是不是应该也是蓝色才对? 比如"付款比例"? 不知道类似的英文命名的高亮效果如何?
|
205
iPhoneXI 2019-11-03 22:10:29 +08:00 via Android
挺舒服,有种看 excel 表格的感觉
|
207
FakeLeung OP |
208
xuanwu 2019-11-03 23:07:28 +08:00
@FakeLeung #206 测了下我这里好像有高亮:
不知何故.. VSC 版本信息: Version: 1.39.2 Commit: 6ab598523be7a800d7f3eb4d92d7ab9a66069390 Date: 2019-10-15T15:33:00.827Z Electron: 4.2.10 Chrome: 69.0.3497.128 Node.js: 10.11.0 V8: 6.9.427.31-electron.0 OS: Darwin x64 17.7.0 |
209
HangoX 2019-11-03 23:20:05 +08:00 1
我觉得用来做枚举非常适合
|
210
mwr1998 2019-11-04 00:36:28 +08:00
要是配合一款中文代码提示插件就更好了
|
211
mwr1998 2019-11-04 00:38:26 +08:00 1
对了有一个问题,有时候 docker 某些容易报错 log 不出中文,别问我咋知道的(
|
212
mingl0280 2019-11-04 04:52:22 +08:00 via Android 1
挺好的,反正客户又不是国际的,写中文没毛病。
我这有个库是从客户的共享代码里拷过来的,全是西班牙语,整个办公室没一个能看懂的……动都不敢动……不建议在对外的共享库里塞中文,但是自用的随便啦 |
213
JasonTsang 2019-11-04 05:47:02 +08:00
你不觉得烦?如果变量变成中文,你得频繁切换语言 ,真是只有更麻烦没有最麻烦。。。变量出现是最频繁的。而且定义变量和一些语法逻辑你却不能使用中文。我怕你效率会变得异常低。
|
214
murmur 2019-11-04 08:28:26 +08:00 1
@JasonTsang 除了前端切页面,你可以算算一天有效的代码行数有多少,本土变量意味着我在给变量命名的时候思考时间=0,维护理解额外开销=0,准确度=100%,对着需求文档起名就对了
|
215
xuanwu 2019-11-04 08:28:33 +08:00
@mwr1998 #210 有自动补全的, 见#30
log 不支持中文大概是编码问题? 这个不算中文命名标识符的锅哈 @mingl0280 #212 其实即使有 API 需要对外开放, 也可以做中英两套, 毕竟额外维护一套仅是命名不同的 API 的工作量相对有限( https://zhuanlan.zhihu.com/p/53050766 ) |
216
ganbuliao 2019-11-04 08:52:19 +08:00 1
又不是什么开源项目.内部使用 我觉得挺好的
|
217
xuanwu 2019-11-04 08:52:34 +08:00
@murmur #214 实在精辟,在这里引用了一下哈: https://zhuanlan.zhihu.com/p/30529835
另外, @FakeLeung 在头条引用了一下你的图: https://www.toutiao.com/a1649187086782467 如有不妥烦请告知。 |
218
wonderay 2019-11-04 08:53:44 +08:00
自己瞎翻译干什么,找一本会计书,看看附录不好吗
|
219
prof 2019-11-04 08:58:11 +08:00 1
不是拼音就行。
|
220
yufeInfo 2019-11-04 09:02:06 +08:00
刚知道 js 里可以用中文定义变量 去 vscode 试了下是 ok 但是感觉怪怪的
|
221
annielong 2019-11-04 09:09:49 +08:00
个人觉得切输入法太麻烦,宁愿中文拼音加标注,鼠标放上去就能显示标注的中文,
|
222
nnnToTnnn 2019-11-04 09:09:50 +08:00 1
写代码是给机器运行的,并顺带给人阅读。
估计楼主是没吃过亏,偷偷告诉你 GBK 编码和 UTF-8 的编码不一样,除非你保证你系统中的编码是一样的并且编译 or 运行的环境支持中文,命名当然没问题,例如某某的易语言。 看楼主写的大概率是 js,目前 js 好像没有明确表示支持中文哟,祝你好运 |
223
nnnToTnnn 2019-11-04 09:12:11 +08:00
而且现在比较流行的是 约定>配置 你认为中文真的靠谱么?
|
224
nnnToTnnn 2019-11-04 09:16:13 +08:00 1
尽量不要使用非 ASCII 进行命名,这个显然是基础。 你用 a,b,c 命名都没关系,起码电脑识别,但是你用非 ASCII 的字符命名,完了,电脑不一定认识它了。比如一个很简单的例子。 你把代码上传到 gitlab 走的 cl ,结果 docker 里面没有这个编码,之后直接编译的时候就凉了
|
225
murmur 2019-11-04 09:23:16 +08:00 1
@nnnToTnnn 如果是局部变量,那么压缩一下不就是 ascii 命名了,这样既保证可维护性又保证运行不会出错
代码是给机器运行的,维护也很重要,尤其是企业应用,一次开发几年都不会推了,这个和互联网的推倒频率没法比 |
226
murmur 2019-11-04 09:26:57 +08:00
@ipwx 别人写这个算法的时候会附一篇完整论文作为参考写到注释里,拿着论文才能看懂整个代码,因为论文是英文的用英文变量甚至是 abcd 这些字母都是正常的
|
227
prodcd 2019-11-04 10:15:35 +08:00 1
有些有着明显用途的变量,像楼主这样用,我觉得挺好,不然还得编英文名再注释中文,英文编的不一定就贴切,别人看了还不一定认识。只要编译器不废话,就用着吧。
|
228
cmdOptionKana 2019-11-04 10:19:57 +08:00 1
看到不少人提编码问题,他们应该平时很少留意编码吧,Linux 体系里 utf8 成为事实标准已经很多年了,编码问题踩坑几率很小。不过事先做一些试验还是必要的,试验过编码没有问题就行,没必要过度担心。
|
229
zunceng 2019-11-04 10:21:09 +08:00
当年领导要求我写代码注释都必须用英文 原因是我们有海外员工。。。
|
230
pkoukk 2019-11-04 10:23:14 +08:00
楼主你是没吃过编码的亏...
|
231
Chingim 2019-11-04 10:24:41 +08:00
切换输入法太累了.除非你用易语言, 不用切换输入法
|
232
zhangyangkam1 2019-11-04 10:31:07 +08:00 2
@blankme 拼音比中文还坑,多音字太多,还有很多人分不清平舌翘舌
|
234
cmdOptionKana 2019-11-04 10:39:22 +08:00 1
@pkoukk 楼主这是 js,上面楼主也说了 webpack 打包后变量名都被改为英文字母,不可能有编码问题。
|
235
index90 2019-11-04 10:42:43 +08:00
楼主你是没吃过编码的亏...+10086
|
236
ypzhou 2019-11-04 10:44:16 +08:00
你叫接手你代码的人怎么活
|
237
index90 2019-11-04 10:46:20 +08:00
@cmdOptionKana js 开发都是 webpack 打包后再提交到 VCS 的?
|
238
dswyzx 2019-11-04 10:55:50 +08:00 1
@blankme #35 实名反驳中英文全角半角
就想知道需要具体到全角标点的使用场景对于程序员能有多少,是在这用全角还是邮件用半角会被打死.最多年终汇报时候手动设置一下 剩下所有的时间都是:中文+半角标点. shift 拯救所有切换 看看,我打完这么多字,就用了 shift 控制输入法,难受了吗? ''' print('asdf') ''' |
241
mantout 2019-11-04 11:20:27 +08:00
中英文的利弊大家说得很多了,我也说不出更多花样。虽然本贴下几乎一边倒的支持,保留我的态度吧。
|
242
no1xsyzy 2019-11-04 11:34:23 +08:00 1
|
243
hmxxmh 2019-11-04 11:38:02 +08:00 1
我觉得很好,说中英文切换麻烦能不能自己试下再来评论,按下 shift 的事,这么说英文大小写切换也麻烦了?
|
244
no1xsyzy 2019-11-04 11:39:17 +08:00 2
@index90 编码的亏,吃过,但越来越少吃了,因为我即使极端情况也基本不再用 Windows 下的 Notepad 了,也不玩某些编码敏感的 R18 日本游戏了。
|
245
dswyzx 2019-11-04 11:49:50 +08:00 1
@blankme 原来是丑拒.看来说的不在一个频道上...
再说了,一般 idea 提供的格式化都会在标点后加空格.完美覆盖你的宽度说法. 另.我们讨论的是编码的时候怎么样方便.期待你打开输入法设置中文输入英文标点写几次代码再回来探讨这个问题. |
246
blankme 2019-11-04 12:07:34 +08:00 via Android
|
247
murmur 2019-11-04 12:09:53 +08:00 1
亏是总有人要吃的,坑总有人要踩的,这是真的解决问题,不是中文关键字中文编程在瞎胡闹
中文变量名、中文数据库解决了什么问题? 中国人开发、中国人设计、中国人维护、中国人使用的程序,居然要全翻译成英文变量,为什么 明明是中国领先、中国标准的技术,却要强行翻译英文,给谁看 你开发一个武侠游戏,你设计了一个系统叫洗练,但是这个词没有翻译,于是你想到魔兽世界有个东西叫重铸,最后你打开魔兽世界的英文 wiki 去看相关资料,折腾不 为了一个中文软件的变量命名,你说我还在用高中词汇,我说他用语不够 native,撕来撕去有意思么 |
248
QdouHuiQwaiLai 2019-11-04 12:09:59 +08:00 1
比拼音 好多了
|
249
murmur 2019-11-04 12:11:46 +08:00 1
说什么编码坑的,为什么洋人的东西那么香,国外公司出了新框架新技术都抢破头去尝试,你咋不说坑了
等到真正解决问题的时候坑坑坑都出来了 说白了还是行业软件没话语权 |
250
cigarzh 2019-11-04 12:49:06 +08:00
你是领导,没问题
|
253
jccg90 2019-11-04 14:36:07 +08:00 via Android 1
现代的编程语言,用中文毫无压力。
我觉得,用中文变量,比用英文水平捉急的变量再额外写一堆注释避免误解,要强得多 编程语言和规范是为了业务服务的,自然哪种方法效率高用哪种 |
254
ragnaroks 2019-11-04 14:38:28 +08:00
维护的人觉得可以那就可以
|
255
Leonard 2019-11-04 14:40:01 +08:00
不是 emoji 变量名我就能接受
|
256
ragnaroks 2019-11-04 14:40:12 +08:00
另外方法内变量,我习惯习惯用类型首字母+序号,比如字符串就是"s1",布尔型就是"b1",我工作 5 年多以来从没有接手的人说看不懂或者理解困难的
|
257
bbao 2019-11-04 14:41:44 +08:00
没毕业咋写都没人管
|
258
piaochen0 2019-11-04 16:04:12 +08:00
虽然大部分时候可能都没太大问题,但是某些情况下,要是因为中文变量名出了一些诡异的问题,到时候连哭的地方都没有
|
259
nnnToTnnn 2019-11-04 16:05:35 +08:00
@murmur
``` 说什么编码坑的,为什么洋人的东西那么香,国外公司出了新框架新技术都抢破头去尝试,你咋不说坑了 等到真正解决问题的时候坑坑坑都出来了 说白了还是行业软件没话语权 ``` 当你说这句话的时候,我可以很肯定的告诉你,真正问题解决的时候并不是有了行业软件的话语权,而是形成所谓的孤岛。 其次为什么要用洋人的东西? 并不是要用洋人的东西,而是要和国外的人交流,你用的可能是 python 可能是 golang 可能是 ruby 也可能是 js,这些生态并不仅仅只是一个国家搞定的,而是需要全世界的人进行交流然后创造出来了。 如果每个国家一门语言,那么必然加大了沟通成本,以及开发成本,所以尽量统一一门语言。 那么统一什么语言比较好? 日语,简体中文,繁体中文,英语还是西班牙语? 显然为了大家的沟通成本应该选择大家都比较熟悉的语言,那么很显然就是英语,因为英语是世界通用语言 其次,最早的时候是洋人搞的计算机,而不是我们搞出来的,尊重别人的劳动成果我也觉得没啥。 ------------------------------------------------------ 其次你的思想里面有种垄断的意思,在软件行业中没有所谓的话语权,只有谁的贡献最大,例如 Spring 或者 linux 或者微软 |
260
virtual2019 2019-11-04 16:32:17 +08:00 1
@dif #251 拼音也可怕。。。拼音重码率太高了,看到一个词的拼音很难直接反应过来是哪个词,更别说没有声调的拼音了。用拼音真还不如直接用汉字。。。
|
261
Very0ldMan 2019-11-04 17:12:29 +08:00
本来是觉得挺不靠谱的,但是进来一看代码写得工工整整的,一时之间也不知道该说点什么了哈 (≧∇≦), 变量名正好数字都相同,如果不同的话,可能看起来就会劝退别人了
|
262
ps1aniuge 2019-11-04 19:16:50 +08:00 1
支持中文变量名~~~~~~~~~~~~~~~~~~~!
|
263
ChengLuffy 2019-11-04 19:19:51 +08:00 via iPhone
我见过 emoji 命名,我敲都敲不出来
|
264
murmur 2019-11-04 19:30:52 +08:00 1
@nnnToTnnn 你没看懂我的问题
我的问题是,我开发中国人设计、中国人用、中国人维护、中国人制定行业标准还领先世界的东西 为什么要考虑外国人的感受,结果搞得自己人命名读代码都成了老大难的问题,你写一个英文变量,还得后面注释写中文什么意思 |
265
luoway 2019-11-04 20:40:10 +08:00 1
看了下评论反对理由:
1. 切换输入法麻烦——不会用输入法,设置一下即可一键切换中英文,比 JS 命名规范中的“大小写”简单多了 2. 编码问题——浏览器开发时往往会在 meta 设置字符集 utf-8,覆盖默认的 GBK ; Nodejs 只支持 utf-8 ; 3. low——民族自卑感 4. 自动补全——VSCode、WebStorm 两大主流编辑器均支持 5. 不能用英文编程规范——没有外国人可以教你中文编程规范 也许一些观点是站在非 JS 开发者自身的角度在评论,但对于频繁更新而又满是兼容性问题的 JS 而言,支持中文变量名不是问题,问题是你用不用。你用,就有同样的 JS 开发者借助 babel 帮你解决一切问题。 |
266
iYoloyolo 2019-11-04 20:55:15 +08:00
看了你的这种代码,反正我是不愿意成为你的同事的
|
267
PinLock 2019-11-04 22:14:07 +08:00 1
讨论三页了,就看人说不合适,有人说太“低级”( low ),就没人说一下,这“班组完成合同内工程款”怎么翻译。以我有限的英语能力外加翻译软件帮助,我没找到比较贴切合适的翻译作为变量名,望哪位能者能帮忙翻译一下,先行谢过了。
|
268
Seanfuck 2019-11-04 23:28:08 +08:00 via iPhone 1
挺好的,中文应用应该推广使用中文变量。楼上有些说的编码问题根本不事,而是习惯问题。
|
269
xuanwu 2019-11-05 01:08:08 +08:00 1
@Very0ldMan #261 以之前的实践经验,一般来说中文命名更容易齐整,比如这里列出的对比: https://zhuanlan.zhihu.com/p/33993440 @HangoX #209 枚举来了
中文命名: |
270
shiny 2019-11-05 01:20:49 +08:00 1
之前也遇到过类似问题,有些术语实在很难翻译出来,用中文做变量,清晰易懂,便于维护。
|
271
qianji201712 2019-11-05 01:26:12 +08:00
写这种代码的大神,有一个简称——傻逼
|
272
foo256 2019-11-05 01:45:53 +08:00 1
说会出现编码问题的,可能是上古程序员,用着上古的文本编辑器,写上古编程语言。中文变量完全没问题
|
273
foo256 2019-11-05 01:52:50 +08:00
@maomaomao001 你用的什么 ide 啊,我的 ide 中文变量也可以自动补全啊
|
274
FrankHB 2019-11-05 03:30:47 +08:00 1
和业务文档能直接对应,需要应对的涉众能懂就没问题。
非得生造需求瞎翻译增加成本的乱棍打出去。 |
275
FrankHB 2019-11-05 03:35:02 +08:00
@cmdOptionKana 用拼音技术上就是 low:重码率高得发指,没事增加歧义,在绝大多数正常的中文用户眼里就是抽。
另外你得正视还有不少人拼音不如汉字水平的,以及拼音编码本身就有争议会引起文化冲突。 |
277
nnnToTnnn 2019-11-05 08:51:10 +08:00
@murmur
``` 我开发中国人设计、中国人用、中国人维护、中国人制定行业标准还领先世界的东西 为什么要考虑外国人的感受,结果搞得自己人命名读代码都成了老大难的问题,你写一个英文变量,还得后面注释写中文什么意思 ``` 没错,易语言不就是这样的产物吗? 开源社区都提倡减少沟通成本,大家都尽量采用大家都知道语言来进行开发维护, 你一个中文编程,命名中文,每个操作系统都不一样,编码都不同会导致很多的错误。 其次 ``` 你写一个英文变量,还得后面注释写中文什么意思 ``` 我最早开始学编程的时候,偷偷的告诉你我那个时候没有变量的概念,只有寄存器。对,没错当时我因为 od 和 ce 入了编程行业,还记得当时用汇编调用 win32 接口做桌面开发。 你可以下载易语言编程一下看看,大部分是 ``` 如果 则 ``` 还有什么 循环,说实话我虽然英语不好,甚至没有怎么学过小学英语,但是我感觉 if for 比如果 则 很方便别人理解。 我最开始用用过易语言。 你可以试试就知道了。 ``` 中国人设计、中国人用、中国人维护、中国人制定行业标准还领先世界的东西 为什么要考虑外国人的感受 ``` 不感苟同这个观念,我认为标准是大家都认同,且一起定制的,而不是所谓的中国人定制。 |
278
aaronhua 2019-11-05 09:40:40 +08:00
你这排版格式,用中英文看起来都整洁啊。即使英文也很容易懂。但是,中文变量不代表可以不用注释。接手过,那种一千多行一个方法的代码,还中文变量,没有注释。一堆中文变量,密密麻麻,看得头晕。排版、注释、模块化才是重点。中文变量在代码烂的时候,表现得更差。
|
279
myfei 2019-11-05 10:31:15 +08:00
不好,别用,看到有人用直接打死。
举个简单的例子 我们定义一个变量 let leader = "小明" 我每次再用到 leader 这个变量时,只需要打出 le 两个字母 IDE 就会提示出来,回车选择就可以直接用了。 假设你是这么定义的 let 领导者 = "小明" 你每次用的时候,就算有中文的编写提示,至少得把「领」字打出来吧。 它需要打出 ling 然后再去选择正确的领字。 还是说你每次用到某个变量,就要把变量名复制一下,再粘贴?? 还有上面各位说的编码问题,兼容问题。 |
280
Jrue0011 2019-11-05 10:31:47 +08:00 1
还行啊,这个格式看起来挺舒服,我一般只介意代码读起来会不会难受,abcd 那种才是坑
|
281
masker0817 2019-11-05 10:38:52 +08:00 via Android
@myfei 我昨天也试了下,确实是这样。不到不得已还是不用中文变量名。Shift 按多了也累的
|
282
hoosin 2019-11-05 11:19:14 +08:00 1
JavaScript 居然可以用中文命名了~
|
283
usagi 2019-11-05 12:46:10 +08:00 via Android 1
莫名好看是怎么回事
|
284
xuanwu 2019-11-05 12:52:35 +08:00
@myfei 不妨就事论事,回应一下 #267 的疑问:这“班组完成合同内工程款”怎么翻译
以及其他几个截图中的中文变量吧 @hoosin 市面上常用的绝大多数都支持了: https://zhuanlan.zhihu.com/p/30886931 Python3 应该是 2008 年就支持了: https://zhuanlan.zhihu.com/p/31598712 刚看了一下 JS 貌似在 ECMAScript 5 就支持了( 2012 年?): https://mathiasbynens.be/notes/javascript-identifiers |
285
bertonzh 2019-11-05 13:03:14 +08:00
我认为挺好,虽然我没有这样用
|
286
KasonPasser 2019-11-05 13:05:29 +08:00 1
所有高级语言的代码都是为了方便人的理解,如果不是,请用汇编。我个人觉得只要是好理解,所有的合法变量名都可以使用。
|
287
ayanmw 2019-11-05 13:41:44 +08:00
函数内部 自己用用就行了, API 你用一个试试..
还有 类似 if 和 `如果` 所以部分变量可以用中文,仅限 难翻译,英文别扭的~ 另外 程序员的自我修养: 兼容上下文的语法和规则,别人没用,你最好也别用! 尽量跟上下文风格一致,除非上下文本身有重大问题的! |
289
myfei 2019-11-05 14:20:59 +08:00
@xuanwu 若是他们真的要定义一个像『班组完成合同内工程款』这种变量名字,我觉得他们代码设计有问题。
这种东西最后出来的不应该是 Team.contract.cash 这样的。 |
290
xuanwu 2019-11-05 14:38:19 +08:00
|
292
myfei 2019-11-05 15:09:48 +08:00
@xuanwu
首先我们能用到的变量名,其实就个名词,通常不会太复杂。其实就算用中文变量名,注释也不是就不用写了。 再者,我还是那个观点,像英语这种语言,26 个字母排列组合,用现有键盘输入天然就比中文输入方便,使用起来也方便。 最后写代码讲究一个连贯性,在写的过程中,时不时切换中英文是很破坏这种连贯性的。 |
293
xuanwu 2019-11-05 16:02:39 +08:00
@myfei "本期“,”工程款“,”保修金“, 仅是上面的几个术语我就一时不确定恰当英文。更不用说即使翻词典找到直译后,过段时间再看的再理解成本了。
以前可读性审核时,目标就是用恰当的命名取代注释。 写代码过程中,想破头起英文命名的比比皆是。 至于切换,一键搞定。见 #238 #243 #265,不用说英文驼峰之类本身也需 shift, 见 #23 |
294
k10ndike 2019-11-05 16:05:29 +08:00 2
我觉得挺好,有些语言官方教程就表明支持中文变量了
https://i.loli.net/2019/11/05/hy7doqfXPS4lGvD.png |
295
a4854857 2019-11-05 17:21:15 +08:00 1
挺不错的,反正 js 混淆了以后都是 abcde, 不会出现编码不支持的问题。。
|
297
fayloue 2019-11-05 17:34:40 +08:00 1
用中文非常清晰明了
|
298
1a0ma0 2019-11-05 18:17:51 +08:00
个人项目可以(拼音算了,太容易出现歧义了),要是团队的话,我感觉还是用英文好。
|
299
zpfhbyx 2019-11-05 18:20:18 +08:00
只有我是嫌打中文麻烦么.
|