我具有职能和技术负责人的审查代码,并说:为什么要这样的if语句?这基本上是相同的消息。如果要自定义,请使用具有该类型的字符串生成器。如何更改它,有人可以帮助我吗?
private Optional<String> validatePrimaryPath(SalesChannelType salesChannelCode, List<String> primaryPathList) {
if (CollectionUtils.isEmpty(primaryPathList)) {
if (salesChannelCode.equals(SalesChannelType.HEB_TO_YOU)) {
return Optional.of("Customer Hierarchy is mandatory field for HebToYou.");
} else {
return Optional.of("Customer Hierarchy is mandatory field.");
}
}
return Optional.empty();
}
为了防止多次写入相同(部分)字符串文字,您可以:
使用常量作为公共部分:
if (CollectionUtils.isEmpty(primaryPathList)) {
final String COMMON = "Customer Hierarchy is mandatory field";
if (salesChannelCode.equals(SalesChannelType.HEB_TO_YOU)) {
return Optional.of(COMMON + " for HebToYou.");
} else {
return Optional.of(COMMON + ".");
}
}
使用StringBuilder
构建字符串:
if (CollectionUtils.isEmpty(primaryPathList)) {
StringBuilder buf = new StringBuilder("Customer Hierarchy is mandatory field");
if (salesChannelCode.equals(SalesChannelType.HEB_TO_YOU)) {
buf.append(" for HebToYou");
}
return Optional.of(buf.append('.').toString());
}
就我个人而言,我将代码保留在问题中,尤其是如果您可能需要支持非英语版本的文本,因为在其他语言中,多余的文本可能不会在那里。
首先,请不要使用原始类型。其次,我不同意使用StringBuilder
构建消息是一种改进。但是,因为这就是您想要的,所以我将向您展示可能的意图。类似,
private Optional<String> validatePrimaryPath(SalesChannelType salesChannelCode,
List<String> primaryPathList) {
if (CollectionUtils.isEmpty(primaryPathList)) {
StringBuilder sb = new StringBuilder(
"Customer Hierarchy is mandatory field");
if (salesChannelCode.equals(SalesChannelType.HEB_TO_YOU)) {
sb.append(" for HebToYou");
}
sb.append(".");
return Optional.of(sb.toString());
}
return Optional.empty();
}
[注意,我已经指定了该方法返回Optional<String>
并在写入List<String>
和Optional
时未指定类型而返回的是List
,而您正在使用原始类型。
个人,我认为您的代码还可以,但是如果您仍然想使用StringBuilder
,对此我有个建议。
private Optional validatePrimaryPath(SalesChannelType salesChannelCode, List primaryPathList) {
if (CollectionUtils.isEmpty(primaryPathList)) {
StringBuilder sb = new StringBuilder("Customer Hierarchy is mandatory field.");
if (salesChannelCode.equals(SalesChannelType.HEB_TO_YOU)) {
sb.insert(sb.length()-1, " for HebToYou");
}
return Optional.of(sb.toString());
}
return Optional.empty();
}