泛型Java,不同对象的重复逻辑块,清理代码
我想清理一些让我头疼的代码:
activityStandardAttributeValue
.setProduct((standardAttributeForm != null && standardAttributeForm
.getProduct() != null) ? standardAttributeForm
.getProduct()
: (groupedStandardAttributeForm != null ? groupedStandardAttributeForm
.getProduct() : null));
activityStandardAttributeValue
.setProject((standardAttributeForm != null && standardAttributeForm
.getProject() != null) ? standardAttributeForm
.getProject()
: (groupedStandardAttributeForm != null ? groupedStandardAttributeForm
.getProject() : null));
我可以简单地将其更改为更易于阅读的形式,如:
Product product = null;
if(standardAttributeForm != null && standardAttributeForm.getProduct() != null) {
product = standardAttributeForm.getProduct();
} else if (groupedStandardAttributeForm != null && groupedStandardAttributeForm.getProduct() != null) {
product = groupedStandardAttributeForm.getProduct();
}
activityStandardAttributeValue.setProduct(product);
Project project = null;
if(standardAttributeForm != null && standardAttributeForm.getProduct() != null) {
project = standardAttributeForm.getProject();
} else if (groupedStandardAttributeForm != null && groupedStandardAttributeForm.getProject() != null) {
project = groupedStandardAttributeForm.getProject();
}
问题是,对于不同的属性,相同的基本逻辑重复了大约16次,并且实际上没有太多的清理。我想创建一个通用的方法来实现这一点,而不必重复相同的基本逻辑。棘手的是standartAtributeForm或groupedStandardAttributeForm可能为空
感谢您的帮助
# 1 楼答案
这并不是一个真正的答案,但它太大,无法在评论中发布(并且取决于格式):
只需使用更好的格式就可以更容易阅读。以下是通过google-java-format传递的代码:
我想你可以这样做:
然后: