SonarLint“用一个return语句替换if-then-else语句”

时间:2019-11-16 14:05:22

标签: java sonarlint

我无法解决此代码异味:

public static boolean esStringVacio(final Object valor) {
        if (valor == null) {
            return true;
        }
        String valorTrim = valor.toString().trim();
        if ((valorTrim).equals("")) {
            return true;
        }
        if ((valorTrim).equals("null")) {
            return true;
        }
        return false;
    }

尝试过但代码气味仍然存在:

if (valor == null || valor.toString().trim().equals("") || valor.toString().trim().equals("null")) {
        return true;
    } else {
        return false;
    }

2 个答案:

答案 0 :(得分:2)

您可以将其缩短为:

return (valor == null || valor.toString().trim().equals("") || valor.toString().trim().equals("null"));

编辑: 您甚至可以缩短以下时间:

return ((String.valueOf(valor).trim().equals("null")) || (StringUtils.isBlank(valor)) ;

感谢欧内斯特的建议。

答案 1 :(得分:1)

您可以将最后3个返回值合并为一个OR,并且仍然可靠/可读。

public static boolean esStringVacio(final Object valor) {
    if (valor == null) {
        return true;
    }
    String valorTrim = valor.toString().trim();
    return valorTrim.equals("") || valorTrim.equals("null");
}