我有编程经验,但对软件开发的经验不多。我正在为我所在的公司编写一款软件,并且我已经开始挑战自己的代码可读性。
我想知道这是否是嵌套if语句的“有效”替代方案,或者是否有更好的解决方法。
假设我有以下方法:
public void someMethod()
{
if (some condition)
{
if (some condition 2)
{
if (some condition 3)
{
// ...etc all the way until:
doSomething();
}
else
{
System.err.println("Specific Condition 3 Error");
}
}
else
{
System.err.println("Specific Condition 2 Error");
}
}
else
{
System.err.println("Specific Condition 1 Error");
}
}
现在,我首先要指出的是,在这种情况下,将条件组合起来(使用&&)是不可能的,因为每个条件都有一个独特的错误需要报告,如果我将它们组合起来,我就无法做到这一点(或者我可以吗?)。在任何人对我尖叫“SWITCH语句!”之前,我应该指出的第二件事是,并非所有这些条件都可以通过switch语句处理;有些是特定于对象的方法调用,有些是整数比较等等。
话虽如此,以下是否是使上述代码更易读的有效方法,或者是否有更好的方法呢?
public void someMethod()
{
if (!some condition)
{
System.err.println("Specific Condition 1 Error");
return;
}
if (!some condition 2)
{
System.err.println("Specific Condition 2 Error");
return;
}
if (!some condition 3)
{
System.err.println("Specific Condition 3 Error");
return;
}
doSomething();
}
基本上,我们不是在else块中检查条件并报告错误,而是检查条件的反义词,并在其为真时返回。结果应该是相同的,但是否有更好的处理方法?