02 | 乱用英语:站在中国人的视角来看英文命名
郑晔
你好,我是郑晔。
上一讲,我们讲了两种常见的命名的坏味道,这一讲的话题还是命名,只不过,这个主题是国外那些经典编程书籍所不曾涵盖的话题:英语命名。
现在主流的程序设计语言都是以英语为基础的,且不说欧美人设计的各种语言,就连日本人设计的 Ruby、巴西人设计的 Lua,各种语法采用的也全都是英语。所以,想要成为一个优秀的程序员,会用英语写代码是必要的。
这里并不是说,程序员的英语一定要多好,但最低限度的要求是写出来的代码要像是在用英语表达。
或许你听说过,甚至接触过国内的一些程序员用汉语拼音写代码,这就是一种典型的坏味道。鉴于现在的一些程序设计语言已经支持了 UTF-8 的编码格式,用汉语拼音写代码,还不如用汉字直接写代码。
当然,这个坏味道实在是太低级了,我就不在这里深入讨论了。让我们来看看还有哪些可能会不经意间忽略的坏味道。
违反语法规则的命名
我们来看一段代码:
初看之下,这段代码写得还不错,它要做的是将一些章节的信息标记为翻译完成。似乎函数名也能反映这个意思,但仔细一看你就会发现问题。
因为 completedTranslate 并不是一个正常的英语函数名。从这个名字你能看出,作者想表达的是“完成翻译”,因为是已经翻译完了,所以,他用了完成时的 completed,而翻译是 translate。这个函数名就成了 completedTranslate。由此,你可以看到,作者已经很用心了,但遗憾的是,这个名字还是起错了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文从中国程序员的视角出发,探讨了在英文命名中常见的坏味道,并提出了相应的改进方法。文章指出了违反语法规则的命名、不准确的英语词汇和英语单词的拼写错误等问题,并建议程序员应遵循基本的命名要求和英语规则,建立业务词汇表,以提升代码质量和可读性。作者强调了英文命名的重要性,并指出英语是软件开发行业的通用语言,程序员需要对程序中用到的英语有基本的感觉,能够发现代码中的坏味道。此外,文章还提到了一些常见的与语言相关的坏味道,并讨论了如何从实践层面上更好地规避这些问题。总的来说,本文通过具体案例和建议,引导程序员在英文命名方面提升自己的技能,以确保代码质量和可读性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码之丑》,新⼈⾸单¥59
《代码之丑》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(35)
- 最新
- 精选
- Jxin1.我的英语不行,所以我想反驳... :) 2.我就是一个将中文词丢字典网,然后挑顺眼的惯犯。但英语水平的不足,我也很绝望呀。有些时候没有选择是幸福的,我很希望一个中文单词丢进去只返回一个英文单词,这样就不用挑战我的英语水平了。 3.达成共识高于英语描述准确。如果团队的英语水平普遍都不高,写得标准真的不见得比中文拼音的认知成本低。在有一定业务背景知识的前提下,如果命名用标准的英语,我需要百度下其中各字段的单词意思,然后才能理解该命名对应的业务含义,不是人家命名不好而是我个人英语水平不行,不认识的单词连猜都没法猜;而如果命名采用中文缩写,甚至中文首字母缩写,这命名水准有些低端,但我能猜出来其对应的业务含义,基于业务背景的认知能为我提供这层觉察心。两者之间还是能有一定效益差异的,遗憾的是bad命名效益还更高... 4.只可意会不可言传,中国人在意会这个事上是真的有先天优势。如果所有人的意会都准确无误,那还有必要追求言语的准确吗?
作者回复: 首先,作为程序员,提升英语水平是应该做的一项努力,这是通向高手的必经之路。否则,就只能在低水平徘徊了,毕竟,写程序的高手外国人居多。不要指望和低水平的下棋能下成高手,没有可能的。 其次,英语这种东西没有什么困难,习惯而已。虽然有些单词不那么直观,但用多了,你就习惯了,所有的单词都一样。有很多单词,我习惯了英文,有时会一下子想不起中文是什么来。 最后,意会不可能准确无误,否则,就不会有女孩的心思男孩你别猜了。基于这个假设的讨论,就不必了。
2020-12-29722 - CityAnimal在不知道要用什么词的情况下: 1. 词汇网站:如dict.cn 2. 把第一步搜到的词在github上搜一下,看下别人怎么用的
作者回复: 非常好的补充。
2021-01-11218 - adang刚开始写代码的时候,虽然没有用汉语拼音去命名,但英文用的也是乱七八糟。当时的TeamLeader每次Code Review在命名上都会花很大的力气帮忙纠正。在Code Review的时候除了记录他说的问题,也观察他的方法,每当他发现有问题的地方,都是先去"词典网站"上搜索,然后细研究下面的事例句子,最后从中找到最符合场景的单词。同时他还建议去看一些好的开源项目,看里面的设计、命名和实现等等。慢慢的自己也继承了他的方法,而且,自己整理了一份表格类似于课程里讲提到的"术语表",每次看到好的命名就会把它记下来,方便以后使用。这份"术语表"后来中断了,学习完今天的课程,后面要继续维护起来。 另外,推荐一个命名的插件CODELF,它的github地址是:https://github.com/unbug/codelf
作者回复: 很好的补充,这个网站确实要比很多程序员自己的选择好。
2021-01-03413 - 刘大明乱用英语这个对英语要求比较高了,这方面如果处理好了,能超过大多数程序员了。
作者回复: 你说得对。
2020-12-289 - FM微言送刚毕业的时候在一家游戏公司工作过,一个同事代码里方法命名和字段命名都是中文,“张飞大招”,“刘备属性”诸如此类的看着代码很出戏。还听说个一个印度同事变量名非常的长100多个字符
作者回复: 中文命名如果能统一,其实也不错。
2021-01-058 - 赵智慧如果再查单词的时候,能捎带看一下例子、语境,会更好。 好处1、对一个单词的理解不仅仅是词典里面的翻译,根据语境能更清晰的理解含义。 好处2、这对英语的提升也有很大的帮助,学习一门语言都是通过语境来学习的。 费事儿的是需要稍微花费点儿时间去查。 改进 我也需要这么做, 不能只查单词和意思。
作者回复: 进一分,有一分的欢喜。
2021-01-036 - DK见过一个系统里面一个属性有三种命名,看的头大
作者回复: 这个叫不一致。
2020-12-296 - 泡泡龙我的英语是在搭建gentoo和arch时候发现翻译版本太落后,或者翻译不完整,然后就索性直接看官方英文版了,把认不得的单词就记背单词软件里。 然后就这样一直加一直背,大概不到一年时间,看技术文档80%的词都看得懂了。现在基本有问题先用英语Google搜索,看不懂的新概念才会看一些中文文章。所有问题,第一时间查的是官方最新英文文档
作者回复: 在实际的场景中学习,这才是学习的正道。
2020-12-295 - 3.141516虽然老师文中提到:使用不恰当的单词简写(比如,多个单词的首字母,或者写单词其中的一部分)。 即不要使用不完整的英文字母,但是平常开发时经常碰到如 message-msg、button-btn 等简写方式,这个也是不允许的吗?必须在任何场景都写完整的英文单词吗? 谢谢老师!
作者回复: 有一些行业通用的缩写可以用,最好不要自己创造,前提是约定好。
2021-01-083 - 桃源小盼推荐大家订另一个程序员英语的专栏。
作者回复: 也许是个办法。
2020-12-303
收起评论