当前位置: 首页 > 面试题库 >

为什么在“ if x then return”之后很少使用“ else”?

刘弘济
2023-03-14
问题内容

该方法:

boolean containsSmiley(String s) {
    if (s == null) {
        return false;
    }
    else {
        return s.contains(":)");
    }
}

可以等效地写成:

boolean containsSmiley(String s) {
    if (s == null) {
        return false;
    }

    return s.contains(":)");
}

以我的经验,第二种形式更常见,尤其是在更复杂的方法(可能存在多个此类出口点)中,“掷”和“返回”也是如此。然而,第一种形式可以使代码的条件结构更加明确。有没有什么理由比另一个更喜欢?


问题答案:

以我的经验,这取决于代码。如果我“防备”某些事情,我会这样做:

if (inputVar.isBad()) {
    return;
}

doThings();

重点很明确:如果该语句为假,则我不希望该函数继续。

另一方面,有些函数具有多个选项,在这种情况下,我会这样写:

if (inputVar == thingOne) {
    doFirstThing();
} else if (inputVar == secondThing) {
    doSecondThing();
} else {
    doThirdThing();
}

即使可以写成:

if (inputVar == thingOne) {
    doFirstThing();
    return;
}
if (inputVar == thingTwo) {
    doSecondThing();
    return;
}
doThingThree();
return;

实际上,归结为最清楚地表明代码在做什么的方式(不一定是哪段代码最短或缩进最少)。



 类似资料:
  • 问题内容: 我想知道为什么numpy.zeros占用这么小的空间? 这不会占用任何内存, 占用约1.5GB。numpy.zeros是否创建一个空指针数组?如果是这样,是否可以在cython中更改指针后将其设置为空?如果我使用: 内存使用率上升。有没有办法更改一个值,然后将其更改回numpy.zeros的格式,最初是在python或cython中使用的? 问题答案: 您在使用Linux吗?Linux

  • 问题内容: 我最近找到了一个示例代码: 该方法将打开一个用户界面窗口。然后,我尝试将代码修剪如下: 两种版本均能正常工作。有什么区别? 问题答案: 任何一种代码都能在99%的时间内工作。 但是,Swing的设计使得对Swing组件的所有更新都应在事件分发线程(EDT)上完成。阅读有关并发的Swing教程以获取更多信息。 问题是它有1%的时间可能无法正常工作。您不想浪费时间尝试调试随机问题。

  • React引入了新的静态方法,它在每个呈现方法之前都会被调用,但为什么呢?在prop change之后调用它对我来说是有意义的,但是在之后调用它就没有意义了,也许我错过了什么。 我根据公司的要求创建了一个组件,在组件中日期是从道具控制的。我在组件中有以下状态。 是的,我在中创建了一个额外的变量来跟踪是否由于而被调用,但我认为这不是正确的方法。 或者是我做错了什么或者遗漏了什么,或者不应该在之后调用

  • 问题内容: 我了解此构造的工作原理: 但是我不明白为什么else在这里使用它作为关键字,因为它表明所讨论的代码仅在for块未完成时才运行,这与它的工作相反!无论我如何考虑,我的大脑都无法从for陈述到else障碍的无缝发展。对我来说,还是更有意义(我正在尝试训练自己这样阅读)。 我想知道Python编码人员是如何在头脑中读取这个结构的。也许我缺少使这些代码块更容易理解的东西? 问题答案: 即使是经

  • 为什么软件公司很少用python开发web?

  • 问题内容: 我只是想简化我的一个类,并以与flyweight设计模式相同的样式介绍了一些功能。 但是,对于为什么总是调用after ,我有点困惑。我没想到这一点。谁能告诉我为什么会这样,否则我如何实现此功能?(除了将实现放入hack之外)。 这是一个例子: 输出: 为什么? 问题答案: 使用 时,你需要控制一个新实例的创建。 使用 时,你需要一个新的实例的控件初始化。 是实例创建的第一步。首先调用