【发布时间】:2020-02-13 01:37:13
【问题描述】:
我有一个用于构建原生 sql 查询的方法。我有 4 个字符串生成器作为输入,并且基于不同的条件,我需要构建我的查询。
这里是代码
private void appendConditions(StringBuilder query, StringBuilder condition, StringBuilder condition2,
StringBuilder condition3) {
if (StringUtils.isNotEmpty(condition.toString())) {
query.append(ApplicationConstants.AND+"(");
query.append("( " + condition + " )");
if (StringUtils.isNotEmpty(condition2.toString())) {
query.append(ApplicationConstants.AND);
query.append("( " + condition2 + " )");
if (StringUtils.isNotEmpty(condition3.toString())) {
query.append(ApplicationConstants.AND);
query.append("( " + condition3 + " )");
}
} else {
if (StringUtils.isNotEmpty(condition3.toString())) {
query.append(ApplicationConstants.AND);
query.append("( " + condition3 + " )");
}
}
query.append(" )");
} else {
if (StringUtils.isNotEmpty(condition2.toString())) {
query.append(ApplicationConstants.AND+"(");
query.append("( " + condition2 + " )");
if (StringUtils.isNotEmpty(condition3.toString())) {
query.append(ApplicationConstants.AND);
query.append("( " + condition3 + " )");
}
query.append(" )");
} else {
if (StringUtils.isNotEmpty(condition3.toString())) {
query.append(ApplicationConstants.AND+"(");
query.append("( " + condition3 + " )");
query.append(" )");
}
}
}
}
当我运行我的声纳报告时,它说这种方法的认知复杂性更高。 我可以简化这种方法以避免许多 if-else 循环
谢谢!
【问题讨论】:
-
Code Review 是一个比较合适的地方问。
-
你能edit你的问题并发布一个对方法
appendConditions()的示例调用吗?换句话说,为方法参数query、condition、condition2和condition3提供样本值?
标签: java if-statement sonarqube