首页 > 其他 > 详细

代码之丑 例子

时间:2021-07-06 09:20:41      阅读:15      评论:0      收藏:0      [点我收藏+]

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。

 2,

if (user.isEditor()) {
  service.editChapter(chapterId, title, content, true);
} else {
  service.editChapter(chapterId, title, content, false);
}

if判断的是参数,而不是动作。

boolean approved = user.isEditor();
service.editChapter(chapterId, title, content, approved);

boolean approved = isApproved(user);
service.editChapter(chapterId, title, content, approved);


private boolean isApproved(final User user) {
  return user.isEditor();
}

 

代码之丑 例子

原文:https://www.cnblogs.com/starof/p/14975153.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!