《代码之丑》学习笔记02—— 乱用英语

最近在学习 郑晔 在极客时间上的一个专栏《代码之丑》,并根据自身情况整理了一份笔记

02 | 乱用英语:站在中国人的视角来看英文命名

现在主流的程序设计语言都是以英语为基础的,且不说欧美人设计的各种语言,就连日本人设计的 Ruby、巴西人设计的
Lua,各种语法采用的也全都是英语。所以,想要成为一个优秀的程序员,会用英语写代码是必要的。这里并不是说,程序员的英语一定要多好,但最低限度的要求是写出来的代码要像是在用英语表达

1.违反语法规则的命名

一般来说,常见的命名规则是:类名是一个名词,表示一个对象,而方法名则是一个动词,或者是动宾短语,表示一个动作
例如:

public void completedTranslate(final List<ChapterId> chapterIds) {}

这段代码要做的是将一些章节的信息标记为翻译完成,似乎函数名也能反映这个意思,但仔细一看你就会发现问题。作者想表达的是“完成翻译”,因为是已经翻译完了,所以,他用了完成时的 completed,而翻译是 translate。这个函数名就成了completedTranslate。由此,你可以看到,作者已经很用心了,但遗憾的是,这个名字还是起错了。

completedTranslate 并不是一个有效的动宾结构。如果把这个名字改成动宾结构,只要把“完成”译为 complete,“翻译”用成它的名词形式 translation 就可以了。所以,这个函数名可以改成 completeTranslation

又例如:一个函数名是 retranslation,其表达的意图是重新翻译,但作为函数名,它应该是一个动词,所以,正确的命名应该是 retranslate

2.不准确的英语词汇

在这种情况下,最好的解决方案还是建立起一个业务词汇表,千万不要臆想。

建立词汇表的另一个关键点就是,用集体智慧,而非个体智慧。

3.英语单词拼写错误

例如:

public class QuerySort {
    private final SortBy sortBy;
    private final SortFiled sortFiled;
    ...
}

sortFiled 是啥?排序文件吗?为啥用的还是过去式?归档?

原来是同时拼错了,应该是排序的字段,是 field

4.使用拼音进行命名;

5. 使用不恰当的单词简写(比如,多个单词的首字母,或者写单词其中的一部分)。

我们还讨论了如何从实践层面上更好地规避这些坏味道:制定代码规范,比如
1、类名要用名词,函数名要用动词或动宾短语;
2、要建立团队的词汇表;
3、要经常进行代码评审。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值