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

2019-11-01 21:38:00 +08:00
 FakeLeung

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

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

31104 次点击
所在节点    程序员
317 条回复
diggerdu
2019-11-03 12:41:14 +08:00
@clare0621 表音文字当然易学 易用还是汉语强
ooops
2019-11-03 12:41:46 +08:00
英文 > 中文 > 拼音。拼音是万万接受不了的
icylogic
2019-11-03 12:57:58 +08:00
没啥不行啊,在一些场景下可读性更好是肯定的,我觉得就是三点不方便,
一个是输入效率,大部分编辑环境对于拼音补全支持得不好,ascii 字符基本输入两三个就可以选到自己想要的了,
第二就是你这段代码其主要是数据定义,又比较好对齐,所以比较好看,可以放到更加复杂的逻辑(比如几层嵌套)中,看着其实会更混乱一些。
第三是没办法避免中英文混杂的问题,比如图中的“payment proportion” 和”in fact contact money last time”为啥不用中文呢,要么就是这是其他库的变量,要么这是团队其他人写的或者遗留代码,这是没法完全避免的。那你们的规范到底是什么时候用中文,什么时候用英文呢。

我对于任何编码规范的看法是,只要团队内成员能一致同意并且遵守,就没啥问题,比如你定大括号必须换行 /一行内的语句可以不用换行,缩进用 4 格还是 2 格,都会有人喜欢或者不喜欢,因为程序员审美观不同。上面说的后两点其实都是审美观问题,只要团队成员能接受并遵守一致的约定,那就没问题。

如果要解决第三个问题,可以给团队定一个专有词汇表(注释或者集中写一个 glossary.md ),项目内这些专有名词必须用这些文本表达。实际上我即使在纯英文的项目里都会这么干,一些容易引起混淆的词或者常用的缩写我会写在这里。比如我写一个图像处理程序,图像中间会经过各种变换,我可以定义,要求一开始输入的图像数据统一称为 input (而不是 raw, original, 原始图像, etc.),这样项目里 所有 input_前缀的都是代表输入的原始数据(input_dimension, input_height, input_file ),不会引起混淆。如果没有这类规范,可能就会在一个地方看到 raw_height, 另一个地方看到“输入图像高度”, input_rows ...
例如楼主的项目里肯定要约定,”实付工程款”这类概念(明显不止一个变量,在整个项目中会到处定义这类变量),在能控制的代码里,必须统一用这五个中文字符,不允许用 payment 之类的代替,否则可能会引起混淆的,至少是可读性上的不便,因为看到 payment 和实付工程款同时出现的时候,我需要反应一下这是不是同一个概念(如果有的地方相同,有的地方不一样,那就很恶心了)

开源项目要面向全世界的话,那唯一能让大部分程序员都接受的规范也就是英文变量了

pep 8:

For Python 3.0 and beyond, the following policy is prescribed for the standard library (see PEP 3131): All identifiers in the Python standard library MUST use ASCII-only identifiers, and SHOULD use English words wherever feasible (in many cases, abbreviations and technical terms are used which aren't English). In addition, string literals and comments must also be in ASCII. The only exceptions are (a) test cases testing the non-ASCII features, and (b) names of authors. Authors whose names are not based on the Latin alphabet (latin-1, ISO/IEC 8859-1 character set) MUST provide a transliteration of their names in this character set.

Open source projects with a global audience are encouraged to adopt a similar policy.
think2011
2019-11-03 13:11:30 +08:00
别的不说,我喜欢截图的代码,好看
heiheidewo
2019-11-03 13:15:28 +08:00
竟然这么多人赞同,你们赢了
asche910
2019-11-03 13:25:33 +08:00
不能接受。 反正我只见过新手用中文命名,当然不排除有少数厉害的。
crella
2019-11-03 13:53:07 +08:00
我爱你 = 'I have loved you for a long time.'
puts 我爱你[13]; puts 我爱你[14]
cashew
2019-11-03 14:53:35 +08:00
我觉得,如果是自己长期维护或者是个人项目,用中文也未尝不可。
你这个如果非要用英文,如何翻译真是要头疼。
最后,你这个排版真是好看,简单明了又好看。
zhouwei520
2019-11-03 15:38:03 +08:00
一句话,中文不 low
bumz
2019-11-03 15:43:36 +08:00
@no1xsyzy 这种数据类型本来就叫 dictionary (dict)

只不过不少语言都跟了 Java 叫 Map
52coder
2019-11-03 15:48:42 +08:00
非常之清晰了,这么写代码都不用加注释了。
cpdyj0
2019-11-03 16:06:53 +08:00
个人感觉倒是不错,唯一的一个疑问就是你是怎么解决输入问题的,切换来切换去不觉得麻烦吗,总得按 Shift (别说英文标点那个事,就现在 MS 拼音输入法时不时给你加一个单引号进去就挺难受)
这种英文一般人翻译还真翻不对
EminemW
2019-11-03 16:07:41 +08:00
你这和截图和代码看起来好舒服啊,出于意料,截图怎么做的
chengxy
2019-11-03 16:58:37 +08:00
@hhhsuan 请您翻一下班组完成合同外工程款呗。
ZredoC
2019-11-03 17:57:01 +08:00
楼主您好,求字体 0.0
fakeshadow
2019-11-03 18:10:19 +08:00
有句讲句,有些英语不好的那变量搞到人一头雾水,还不如老实用中文.
new2500
2019-11-03 18:41:08 +08:00
google 一下 你也知道......
mgrddsj
2019-11-03 19:16:55 +08:00
HeiXiaoBai
2019-11-03 19:43:03 +08:00
只要能用,不会引起歧义,不会出现编码兼容性问题,那总比拼音好,用英文还可能得注释个对应翻译
loveour
2019-11-03 19:52:39 +08:00
觉得中文变量名挺好的。很多东西可能比较好翻译,之前做武侠游戏,很多名字实在不知道怎么翻译。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/615420

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX