代码之丑

1,命名例子

这段代码做了什么?

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);
}

 

根据章节id从数据库中读取章节,把章节的状态改为翻译中,再把章节写回数据库。

 

 

把一个章节的翻译状态改为翻译中。

问题:需要阅读这段代码的细节,才能知道这段代码是做什么的?

将章节的状态改为翻译中,叫处理章节。

将章节的状态改为翻译完成,是不是也叫处理章节?

修改章节内容也叫处理章节?

命名过于宽泛,没有错,但不精准。

 

命名首先要能够描述这段代码做的事情。changeChapterToTranslating

如果把细节平铺开来,那本质上和直接阅读细节差别不大。

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

我们为什么把翻译状态改为翻译中,这一定是有原因的,也就是意图。具体到这里的业务,我们把翻译状态修改为翻译中,是因为我们在这里开启了一个翻译的过程。所以,这段函数应该命名startTranslation。

 

上一篇:opencv dilate


下一篇:C# Qrcode生成二维码支持中文,带图片,带文字