如何精准命名!

不精准的命名

1
2
3
4
5
6
7
8
9
public void processChapter(long chapterId) {
Chapter chapter = this.repository.findByChapterId(chapterId);
if (chapter == null) {
throw new IllegalArgumentException("Unknown chapter [" + chapterId + "]");
}

chapter.setTranslationState(TranslationState.TRANSLATING);
this.repository.save(chapter);
}

这是一类典型的命名问题,从表面上看,这个名字是有含义的,但实际上,它并不能有效地反映这段代码的含义。

命名要能够描述出这段代码在做的事情

一个好的名字应该描述意图,而非细节。

用技术术语命名

1
List<Book> bookList = service.getBooks();

其实,在这段代码里真正要表达的是拿到了一堆书,所以,这个名字可以命名成 books。

在一个技术类的项目中,这些技术术语其实就是它的业务语言。

但对于业务项目,这个说法就必须重新审视了。

用业务语言写代码

编写可维护的代码要使用业务语言。

从团队的角度看,每个人根据自己的理解来命名,就有可能出现千奇百怪的名字。

所以,一个良好的团队实践是,建立团队的词汇表,让团队成员有信息可以参考。

不要乱用英语

类名是一个名词,表示一个对象,而方法名则是一个动词,或者是动宾短语,表示一个动作。

单词网站:https://dict.youdao.com/