if异常判断尝试使用Assert例如:if(CollectionUtils.isEmpty(hotContents)){log.error("社区主题获取7*24小时选择内容获取数据错误:{}",热门内容);thrownewBusinessAPIException("社区话题获取7*24小时选择内容获取数据错误");}可以改为AssertAssert.notEmpty(hotContents,"社区主题获取7*24小时选择内容获取数据错误");又如:if(CommunityConsts.TAB_NEWS_SUCCEED_STATUS.equals(tabNewResponse.getCode())){//dosomething}else{thrownewAPICallException(tabNewResponse.getCode(),tabNewResponse.getMsg());}可以改成:Assert.isTrue(TAB_NEWS_SUCCEED_STATUS.equals(tabNewResponse.getCode()),"7×24tab信息推荐界面Fail!code:{}-msg:{}",tabNewResponse.getCode(),tabNewResponse.getMsg());如果Assert抛出的异常不符合要求(比如抛出个别异常),那么至少包装一个静态方法,比如BizAssert,这里主要的问题是有很多重复的判断语句,所以最好把这些重复的代码尽量去掉异常处理不规范Exceptionhandlingisnotthenorm,尽量不要侵入正常的业务逻辑。比如验证返回值,之前很多代码都会这样写:thrownewBusinessAPIException("接口返回数据错误");}这里只是异常转换,没什么营养。完全可以封装一个新的验证方法并在其中抛出异常。封装后写,validateUtil.bizCheck(data,"xxxmsg");DomainModel尽量封装,不要暴露过度。让我们看一个例子,@Data@AllArgsConstructorpublicclassReviewWealthFocusInfo{ListreviewWealthFocus;publicListgetReviewWealthFocus(){if(reviewWealthFocus.size()>CommunityListConsts.FIRST_COMMUNITY_LIST){returnreviewWealthFocus.stream().limit(3).collect(Collectors.toList());}returnreviewWealthFocus;可以看到,这个类里面,只有一个成员,已经有getter了,但是有些同学还是习惯加上lombok注解@Data。有时候lombok只是为了方便,其实是破坏了封装。可以改成这样,增加一个构造函数,也可以增加一些入参校验。不比lombok麻烦,IDEA有快捷键可以快速添加co??nstructor、getter、setter、override等。publicReviewWealthFocusInfo(ListreviewWealthFocus){Validate.notNull(reviewWealthFocus);this.reviewWealthFocus=reviewWealthFocus;}publicListgetReviewWealthFocus(){returnreviewWealthFocus.subList(0,Math.min(FIRST_COMMUNITY_LIST,reviewWealthFocus.size()));}}上面的例子还有一个毒的地方,就是List的拦截,顺手改了,就不细说了。对于需要重复调??用的地方,请使用循环检查流程。我还发现有一个地方,同一个方法被调用了两次。getTabNewsIds()这个方法重复了两次,很费解。ListtabNewsIds=getTabNewsIds();ListotherTabNewsIds=getTabNewsIds();ids=getTotalTabNewsId(tabNewsIds,otherTabNewsIds);且不说为什么要这样写,至少是整个循环吧?一个简单的循环将其包装起来privateListgetEnoughTabNewsIds(){Listids=Lists.newArrayList();while(ids.size()<=NEWS_NUM_THRES){ids.addAll(getTabNewsIds());}返回ID;}