很抱歉,如果标题含糊不清,我不确定如何说出来。
是否更好地表达一个条件,使得您不想要的结果进入if语句然后退出该函数,或者我应该测试我想要的结果并使用我的代码跟随该语句。
也许一些例子会有所帮助:
我的意思是测试阴性结果:
if(myObject == null) {
return;
}
//do whatever with myObject
我的意思是测试阳性结果:
if(myObject != null) {
//do whatever with myObject
}
很抱歉,如果有人能说得比我好,请做。
答案 0 :(得分:7)
我个人更喜欢第一种检查对象是否为null然后立即返回的方法。它允许“真实代码”保持不变,线性,并且可以防止许多嵌套的if语句,我发现它们更具可读性。 否则,两种方式都是有效的,并且具有相同的结果。选择在您的情况下最适合的情况(可能取决于其他任何情况或if语句)。
这是一个很好的例子:
if (object1 == null) {
return;
}
// do some stuff
if (object2 == null) {
return;
}
// do some stuff
if (object3 == null) {
return;
}
反对:
if (object1 != null) {
// do some stuff
if (object2 != null) {
// do some stuff
if (object3 != null) {
// do some stuff
}
}
}
我发现第一个更具可读性。
答案 1 :(得分:0)
如果在满足正条件时可以采取有效操作,例如记录结果集为空,或者未分配变量,则最好使用正条件。当您测试字符串时,API可以在这里提供帮助,例如Apache Commons StringUtils isNotBlank()。但是,有时最干净的事情是进行否定测试,例如只允许在变量非空的情况下继续处理。