Java SonarLint“用单个返回语句替换此if-then-else语句”

Java SonarLint“用单个返回语句替换此if-then-else语句”,java,sonarlint,Java,Sonarlint,我无法修复此代码: public static boolean esStringVacio(final Object valor) { if (valor == null) { return true; } String valorTrim = valor.toString().trim(); if ((valorTrim).equals("")) { return true;

我无法修复此代码:

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;
    }
您可以将其缩短为:

return (valor == null || valor.toString().trim().equals("") || valor.toString().trim().equals("null"));
编辑: 您可以进一步缩短到:

return ((String.valueOf(valor).trim().equals("null")) || (StringUtils.isBlank(valor)) ;
感谢欧内斯特的建议

您可以将其缩短为:

return (valor == null || valor.toString().trim().equals("") || valor.toString().trim().equals("null"));
编辑: 您可以进一步缩短到:

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

感谢欧内斯特的建议

您可以将最后3个返回组合成一个或多个,它仍然是可靠的/可读的

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

您可以将最后3个返回组合成一个或多个,并且仍然是可靠的/可读的

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

您不需要返回true或false,只需返回checked语句的结果:只要有if条件{return true;}else{return false;},就应该使用return条件;检查null。真正地这难道不是真实的数据吗?@TomHawtin-tackline这可能不会发生吗?可能在json或其他什么东西中?@BugsOverflow我不想使用任何json库或API,它们不能区分json规范直接支持的文本null和字符串null。您不需要返回true或false,只要返回checked语句的结果:只要有if条件{return true;}否则{return false;},应改为使用return条件;检查null。真正地这难道不是真实的数据吗?@TomHawtin-tackline这可能不会发生吗?可能在json或其他什么东西中?@BugsOverflow我不想使用任何json库或API,它们不能区分json规范直接支持的文本null和字符串null。额外的括号是什么?此外,String.isBlank.toString可能是一项昂贵的操作。运行两次可能会对性能造成不必要的损失。出于这个原因,是更好的。你们不应该真的编码高尔夫,参考。额外的括号是什么?此外,String.isBlank.toString可能是一项昂贵的操作。运行两次可能会对性能造成不必要的损失。出于这个原因,它更好。您不应该真正编写golf代码,请参阅。更简短一些:return array.asList,null.containsObjects.toStringvalor.trim@AndyTurner不确定这是否是一种改进,因为破译代码的意图需要更多的时间。问题本身是关于解决自动检测到的代码气味,我怀疑其意图是代码高尔夫。更简短一些:return Arrays.asList,null.containsObjects.toStringvalor.trim@AndyTurner不确定这是否是一种改进,因为破译代码的意图需要更多的时间。问题本身是关于解决自动检测到的代码气味,我怀疑其意图是代码高尔夫。