Ang*_*ina 2 java if-statement sonarqube
我的代码分析插件抱怨包含以下代码的方法的代码复杂性。我注意到以下代码看起来可以合并,但是我不确定该怎么做:
for(Command command : commands) {
if (command instanceof AddCommand || command instanceof UpdateCommand) {
if (!isMaturityDateInPast() && !paymentDueDate().isAfter(LocalDate.now())) {
command.execute(request);
}
} else {
command.execute(request);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试引入布尔变量并将其设置在if和else语句中,但这只会增加更多的代码行。在逻辑上放置有共同点的代码部分时,我不是很好。我可以说这if-else可以合并,但我不知道该怎么做。有人可以照亮吗?
我会尽早continue避免重复command.execute()。我认为不应该将条件组合在一起或创建另一个函数是不值得的。
for(Command command : commands) {
if (command instanceof AddCommand || command instanceof UpdateCommand) {
if (isMaturityDateInPast() || paymentDueDate().isAfter(LocalDate.now())) {
continue;
}
}
command.execute();
}
Run Code Online (Sandbox Code Playgroud)