找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 2773|回复: 0

[其他程序语言] 程序代码中变量名到底是用英文还是用拼音

[复制链接]

378

主题

-130

回帖

167

广播

已有小成

积分
425
泰拉
0
水晶
0
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【我是小土豪】【宝剑回鞘】【泰拉达人】【奥运选手】

发表于 2018-4-26 09:37:14 | 显示全部楼层 |阅读模式
这个问题似乎是不需要讨论了。所有有点经验的程序员都会毫不犹豫的回答,当然是英文。但我今天偏要来说一说我自己的意见,并不能这么一概而论。
据某网站调查,给变量命名是程序员每天最头疼的事。所以可见不论英文或中文,给变量命名都非易事。我先给出我自己的命名规则:
1, 对所有需要阅读你代码的人来说,变量名没有歧义
2, 在此基础上越短越好
3, 对整个项目来说形式统一
先说一下第三条,很好理解,比如要用camel case 就都用camel case,要用下划线就都用下划线。这个就不多说了。
根据我的规则,变量名到底是用英文还是拼音,并没有太大关系。
首先一点,我们要确定阅读你代码的人群。其实这也是很多程序员说要用英文做变量名的最主要原因。很多代码是需要跨国家或地区合作的,或者需要和全世界分享的。那么,英文无疑是最好的选择。但还有很多情况下,代码只需要一部分人看懂,或者在极端一点,只需要你自己看懂,那么就只需要保证一点就可以了,那就是没有歧义。
我看过一些日本程序员的代码,他们很多人都是大大方方的直接用平假名的罗马注音来命名变量。因为人家本来就是只给日本程序员看的,我们偷看本来就是不对的。人家用平假名给变量起名,还变相的相当于给程序加密了呢。说道这里,我仿佛意识到了为什么日本没有大的国际IT公司了,但是不得不说,他们自己国内的IT公司的水平,其实一点也不比美国的差的。
有些观点认为,程序具有天生的需要给全世界共享的需求。这点我也不是很认同,也有其他具有类似属性的东西,比如论文。那我们是不是所有的论文都要用英文写,中文的论文就一点价值都没有了呢?
也有些人不用拼音的原因是用拼音的歧义较多。比如biaoGe可能是表格,也可能是表哥。这一点其实在韩语去汉字化过程中很多人都提到过。韩语的书写文字中之前存在大量的汉字,在二战后,韩国和朝鲜几乎同时改革文字,将韩语中的汉字全部去掉,只留下韩语本身的注音字符。(那些符号相当于拼音,所以只要你学会那些符号的念法和拼法,就能读出所有的韩语了)刚开始人们有些不习惯,但是现在已经很少有歧义了。
因为理解一个词的意思不光取决于读音,还取决于上下文语境。你说提交biaoGe,和我的biaoGe,相信大部分人都能理解第一说的是表格,第二个说的是表哥。其实程序跟文章一样,也是有语境的。如果想将拼音本身进一步消歧,也是有办法的,比如在拼音后面加上声调,biao3ge2,这样一下就能读出是表格了。
刚才说了为什么可以用拼音做变量名,接下来再说一些不宜使用英文做变量名的情况。
1, 英文不好的程序员,用英文做变量名反而容易闹笑话。
很多英文好的程序员指责一些英文不好的程序员变量名不用英文,这就像你看到一个人在用美图秀秀修图,然后去指责他为什么不用photoshop啊?还说英文不好可以去查字典嘛,或者上网查啊。
我们在网上经常嘲笑一些神翻译,比如把“干货”翻译成“fuck goods”,这明显就是上网机器翻译的。而英文不好的程序员上网查的话,很容易起出类似的变量名。到时候反而不如写gan1huo4能让人看懂。
如果一个团队的负责人要求团队成员必须用英文做变量名,请在招人的时候就把英文好作为一个必须的要求。
2,有些中文的词汇是无法翻译成英文的,翻译了反而让人摸不着头脑。我之前做过一段时间的网页游戏,很多网页游戏是中国武侠题材的。比如要写一个方法是降龙十八掌,如果你硬要翻译成beatingDragon18Palms,我不知道有多少人能看得懂。这就像之前中国翻译地名和路名,将北京西站翻译成Beijing west train station还是翻译成Bei Jing Xi Zhan呢?我们都理解用字母是为了外国人书写方便,但是使用的时候,对象却大部分是中国人。比如一个外国人拿着写着这两种翻译的纸条给出租车司机,让司机开到指定地点,哪种翻译更能达到目的呢?
有些人说用拼音可以,但千万不要用拼音首字母。我倒是觉得只要没有歧义,用拼音首字母也是可以的。比如降龙十八掌的方法完全可以写成xl18z,在有上下文的情况下,是完全可以看懂的。这些东西也可以约定俗成,比如程序员们都知道i18n是代表internationalization,就是多语言国际化。这个就符合我命名规则里面的第二条,越短越好。
还有些时候词汇确实有英文,但是太难太偏,大部分中国程序员都看不懂,但程序又只有中国的团队看,这种情况也可以使用拼音。比如很多医学词汇,像otorhinolaryngological department 耳鼻喉科,你这样英文写出来,所有读你程序员的人都得抱个字典读你程序。
最后我也要承认,只要能用英文的时候还是要尽量用英文。因为英文是计算机的母语。很多框架比如ruby on rails和仿照rails的cakephp,都是convention over configuration,就是让你尽量不要自己配置规则,而要用框架已经约定俗成的规则。他们规定了数据库表名必须是下划线复数,model名称必须是camelcase单数,controller名称又是camelcase的复数,这样就只能使用英语了。
还有很多文档也都是只有英文版的,想上stackoverflow上问个问题,也得用英文问。在github上跟人切磋也还是得用英文。所以想成为牛B的程序员,英文还是很重要的。我这篇文章旨在说明新手或者水平还没达到那么高的程序员们,不要硬逼自己,我们量力而行。

[发帖际遇]: 一个袋子砸在了 流觞 头上,流觞 赚了 8 泰拉. 幸运榜 / 衰神榜
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-5-2 12:08 , Processed in 0.112217 second(s), 35 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表