出于某种原因,我不得不看到这段代码中存在冗余。有谁能帮我把它重构得更具可读性和简洁?
if (cachedParty == null || !cachedParty.equals(partyDto)) {
if (cachedParty == null
&& partyDto.getSellerStatusCode()
.equalsIgnoreCase(SellerStatusEnum.ACTIVE.getCode()))
{
pricingControlList.add(convertPartyDtoToPricingControl(partyDto));
} else if (!cachedParty.equals(partyDto)
&& cachedParty.getSellerStatusCode()
.equalsIgnoreCase(SellerStatusEnum.ACTIVE.getCode())
&& !partyDto.getSellerStatusCode()
.equalsIgnoreCase(SellerStatusEnum.ACTIVE.getCode())
) {
pricingControlList.add(convertPartyDtoToPricingControl(partyDto));
}
partyCache.put(partyDto.getSellerServicerNumber(), partyDto);
partiesToSaveOrUpdate.add(partyDto);
}
2条答案
按热度按时间2ledvvac1#
我建议你做个助手
isActive(party)
它回来了partyDto.getSellerStatusCode().equalsIgnoreCase(SellerStatusEnum.ACTIVE.getCode()
. 另外,当cachedParty == null
因为!cachedParty.equals(partyDto)
正在呼叫equals
为了null
. 所以,考虑到这一点partyDto
永远不会null
,这可以简化为!partyDto.equals(cachedParty)
.另外,在中调用相同的方法
if(x) else if (y)
语句,因此可以将其缩减为一个if语句x or y
检查。那么,让我们重写你的陈述:我们在第一段决定,
A or B = B
. 所以现在的表情看起来像因此,通过这些优化,我们可以得到:
我注意到没有
cachedParty != null
签入嵌套if,最终结果如下所示:efzxgjgh2#
与…的比较
SellerStatusEnum.ACTIVE
可以作为接受Supplier<String>
顶层比较可以简化为删除cachedParty == null
-从代码中假设partyDto
不为null,因此检查就足够了!partyDto.equals(cachedParty)
示例实现: