程序代码中变量名到底是用英文还是用拼音 黑马程序员到底有多黑

这个问题似乎是不需要讨论了。所有有点经验的程序员都会毫不犹豫的回答,当然是英文。但我今天偏要来说一说我自己的意见,并不能这么一概而论。

据某网站调查,给变量命名是程序员每天最头疼的事。所以可见不论英文或中文,给变量命名都非易事。我先给出我自己的命名规则:

1,对所有需要阅读你代码的人来说,变量名没有歧义

2,在此基础上越短越好

3,对整个项目来说形式统一

先说一下第三条,很好理解,比如要用camelcase 就都用camelcase,要用下划线就都用下划线。这个就不多说了。

根据我的规则,变量名到底是用英文还是拼音,并没有太大关系。

首先一点,我们要确定阅读你代码的人群。其实这也是很多程序员说要用英文做变量名的最主要原因。很多代码是需要跨国家或地区合作的,或者需要和全世界分享的。那么,英文无疑是最好的选择。但还有很多情况下,代码只需要一部分人看懂,或者在极端一点,只需要你自己看懂,那么就只需要保证一点就可以了,那就是没有歧义。

我看过一些日本程序员的代码,他们很多人都是大大方方的直接用平假名的罗马注音来命名变量。因为人家本来就是只给日本程序员看的,我们偷看本来就是不对的。人家用平假名给变量起名,还变相的相当于给程序加密了呢。说道这里,我仿佛意识到了为什么日本没有大的国际IT公司了,但是不得不说,他们自己国内的IT公司的水平,其实一点也不比美国的差的。

有些观点认为,程序具有天生的需要给全世界共享的需求。这点我也不是很认同,也有其他具有类似属性的东西,比如论文。那我们是不是所有的论文都要用英文写,中文的论文就一点价值都没有了呢?

也有些人不用拼音的原因是用拼音的歧义较多。比如biaoGe可能是表格,也可能是表哥。这一点其实在韩语去汉字化过程中很多人都提到过。韩语的书写文字中之前存在大量的汉字,在二战后,韩国和朝鲜几乎同时改革文字,将韩语中的汉字全部去掉,只留下韩语本身的注音字符。(那些符号相当于拼音,所以只要你学会那些符号的念法和拼法,就能读出所有的韩语了)刚开始人们有些不习惯,但是现在已经很少有歧义了。因为理解一个词的意思不光取决于读音,还取决于上下文语境。你说提交biaoGe,和我的biaoGe,相信大部分人都能理解第一说的是表格,第二个说的是表哥。其实程序跟文章一样,也是有语境的。如果想将拼音本身进一步消歧,也是有办法的,比如在拼音后面加上声调,biao3ge2,这样一下就能读出是表格了。

刚才说了为什么可以用拼音做变量名,接下来再说一些不宜使用英文左边两名的情况。

1,英文不好的程序员,用英文做变量名反而容易闹笑话。

很多英文好的程序员指责一些英文不好的程序员变量名不用英文,这就像你看到一个人在用美图秀秀修图,然后去指责他为什么不用photoshop啊?还说英文不好可以去查字典嘛,或者上网查啊。

我们在网上经常嘲笑一些神翻译,比如把“干货”翻译成“fuck goods”,这明显就是上网机器翻译的。而英文不好的程序员上网查的话,很容易起出类似的变量名。到时候反而不如写gan1huo4能让人看懂。

如果一个团队的负责人要求团队成员必须用英文做变量名,请在招人的时候就把英文好作为一个必须的要求。

2,有些中文的词汇是无法翻译成英文的,翻译了反而让人摸不着头脑。我之前做过一段时间的网页游戏,很多网页游戏是中国武侠题材的。比如要写一个方法是降龙十八掌,如果你硬要翻译成beatingDragon18Palms,我不知道有多少人能看得懂。这就像之前中国翻译地名和路名,将北京西站翻译成Beijing west train station还是翻译成Bei Jing Xi Zhan呢?我们都理解用字母是为了外国人书写方便,但是使用的时候,对象却大部分是中国人。比如一个外国人拿着写着这两种翻译的纸条给出租车司机,让司机开到指定地点,哪种翻译更能达到目的呢?

程序代码中变量名到底是用英文还是用拼音 黑马程序员到底有多黑

有些人说用拼音可以,但千万不要用拼音首字母。我倒是觉得只要没有歧义,用拼音首字母也是可以的。比如降龙十八掌的方法完全可以写成xl18z,在有上下文的情况下,是完全可以看懂的。这些东西也可以约定俗成,比如程序员们都知道i18n是代表internationalization,就是多语言国际化。这个就符合我命名规则里面的第二条,越短越好。

还有些时候词汇确实有英文,但是太难太偏,大部分中国程序员都看不懂,但程序又只有中国的团队看,这种情况也可以使用拼音。比如很多医学词汇,像otorhinolaryngologicaldepartment 耳鼻喉科,你这样英文写出来,所有读你程序员的人都得抱个字典读你程序。

最后我也要承认,只要能用英文的时候还是要尽量用英文。因为英文是计算机的母语。很多框架比如ruby on rails和仿照rails的cakephp,都是convention over configuration,就是让你尽量不要自己配置规则,而要用框架已经约定俗成的规则。他们规定了数据库表名必须是下划线复数,model名称必须是camelcase单数,controller名称又是camelcase的复数,这样就只能使用英语了。

还有很 多文档也都是只有英文版的,想上stackoverflow上问个问题,也得用英文问。在github上跟人切磋也还是得用英文。所以想成为牛B的程序员,英文还是很重要的。我这篇文章旨在说明新手或者水平还没达到那么高的程序员们,不要硬逼自己,我们量力而行。

  

爱华网本文地址 » http://www.413yy.cn/a/25101015/267354.html

更多阅读

日本核电站爆炸,危害到底有多大? x射线危害到底有多大

日本第三次核电站爆炸,危害到底有多大?放射性污染,是核电站爆炸的一瞬间产生的,还是会持续很长时间,如果持续的污染,大概得持续多长时间!放射性物质本来就存在,爆炸也不是核爆炸只是屏蔽核反应的混凝土保护层被爆炸炸开而导致了核泄漏

李小龙的功夫到底有多强 李小龙到底有没有功夫

李小龙,一代武术宗师,功夫电影巨星,世界武功片电影表演家,截拳道的创始人。  他是将中国功夫传播到全世界第一人,打入好莱坞的首位华人,他革命性地推动了世界武术和功夫电影的发展。  他将 Kung Fu 一词写入了英语词典。李小龙是中国

美的紫砂锅到底有多“毒”:这时候了还在骗人(图)

美的紫砂锅到底有多“毒”:这时候了还在骗人(图)新闻背景:23日,央视《每周质量报告》报道称,美的在产品宣传册中称紫砂煲内胆叫“紫金风火内胆”,是“全部选用纯正紫砂烧制”,“富含丰富微量元素,补铁补血,有益身体健康”。但美的紫砂煲实际

声明:《程序代码中变量名到底是用英文还是用拼音 黑马程序员到底有多黑》为网友帥旳狠冇型分享!如侵犯到您的合法权益请联系我们删除