gpt4 book ai didi

java - 嵌入式 if 语句的替代方案?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:50 26 4
gpt4 key购买 nike

我有编程经验,但在软件开发方面了解不多。我目前正在为我工​​作的公司编写一个软件,我开始挑战自己代码的可读性。

我想知道这是否是嵌入式 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 STATEMENT!”之前我应该​​指出的第二件事。在我看来,并非所有这些条件都可以通过 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 block 中检查条件和报告错误,而是检查条件的倒数,如果为真则返回。结果应该是一样的,但是有更好的处理方法吗?

最佳答案

如果我特别迂腐,我会使用这样的东西。

boolean c1, c2, c3;

public void someMethod() {
boolean ok = true;
String err = "";

if (ok && !(ok &= c1)) {
err = "Specific Condition 1 Error";
}

if (ok && !(ok &= c2)) {
err = "Specific Condition 2 Error";
}

if (ok && !(ok &= c3)) {
err = "Specific Condition 3 Error";
}

if ( ok ) {
doSomething();
} else {
System.out.print(err);
}
}

您现在是单导出且平坦。

已添加

如果 &= 对你来说很难,使用类似的东西:

  if (ok && !c3) {
err = "Specific Condition 3 Error";
ok = false;
}

关于java - 嵌入式 if 语句的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com