【问题标题】:When is it acceptable to break prematurely out of a loop/method?什么时候可以过早地退出循环/方法?
【发布时间】:2019-07-09 18:53:48
【问题描述】:

这是我在大学课堂上一直在思考的一个问题,我需要听取其他人的观点。在编码实践方面,我搜索并找不到与此问题非常相似的另一个问题。

(示例是用 Java 编写的)
我写代码的时候,一般会写这样的方法:

public void myMethod(int one, int two) {
    if (one >= two) return;
    // do things

    if (two != one) return;
    // do other things
}

而不是像这样写方法:

public void myMethod(int one, int two) {
    if (one < two) {
        // do things
        if (two != one) {
            // do other things
        }
    }
}

同样,我会这样写我的循环:

for (int i = 0; i < x.length; i++) {
    if (x[i].getValue() > 4) continue;
    // do things

    if (!xConditionTwo) continue;
    // do other things
}

而不是这样:

for (int i = 0; i < x.length; i++) {
    if (x[i].getValue() <= 4) {
        // do things

        if (xConditionTwo) {
            // do other things
        }
    }
}

如此处所见,我按顺序(从顶线到底线)查看事物,如果某些东西不是我们正在寻找的东西,那么退出方法/循环对我来说是有意义的,我们不'不需要 else 语句。

但是,当我与我的大学导师交谈时,他们都同意,如果有人要编写这样的代码,他们将不会被雇用,因为该人无法找出不需要使用 continue 的算法/返回。

我对每个人的问题是:什么时候可以像这样使用 continue/return 来中断,如果有的话?为什么这被认为是不好的做法,我如何避免使用没有 else 的 if 语句来避免额外的缩进?

【问题讨论】:

  • 你试过用谷歌搜索这个w3schoolscodebursttutorialspointstackoverflow
  • 我理解 continue 和 break 之间的区别,前三个链接没有客观地概述为什么这是不好的做法。但是,第四个链接看起来很有希望,我来看看。编辑:第四个链接没有详细说明方法中的返回语句。这对某些人来说可能是一个静音点,但我觉得应用程序在循环和方法之间有很大不同。

标签: loops methods logic


【解决方案1】:

这将是一个主要处理意见的问题,但对于你的两个例子,我会像你一样在第一行使用 continue/return,但对另一个使用 if 语句。

public void myMethod(int one, int two) {
    if (two >= one) {
       return;
    }
    // do things
    if (two != one) {
        // do other things
    }
}

对我来说,这更好读并限制了嵌套的 if 语句

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2010-09-27
    • 1970-01-01
    相关资源
    最近更新 更多