在PHP中使用break和continue是否是一种好的做法?
让我有几个问题回答:
为什么不应该它被认为是好的做法呢?
它会降低代码的可读性吗?
它会减慢你的周期吗?
在光线使用方面,它可以,但在使用量很大的情况下,它会让您的代码通心粉。 break
和continue
基本上只是一个受限制的goto
,因此,谨慎使用。
除了goto的事实,你永远不知道它是向后还是向前跳。随着休息和继续,你知道它跳到哪里 – jab 2010-03-22 11:17:01
在Python中,我们使用无限循环和break来提高可读性。所以,是的,你可以使用它,只要你做得对,并有一个很好的理由。
do {
if (condition1)
break;
some code;
some code;
if (condition2)
break;
some code;
some code;
if (condition3)
break;
some code;
some code;
} while (false);
与
if (!condition1) {
some code;
some code;
if (!condition2) {
some code;
some code;
if (!condition3) {
some code;
some code;
}
}
一些人找到的第一个版本的abhomination和难以阅读和爱的第二个版本。有些人发现第一个版本更清洁,更容易阅读。随着条件数量的增加,我倾向于发现第一个版本更容易遵循,因为第二个版本越来越难以遵循嵌套层次。另外,如果if (condition) break;
进入只有更复杂的东西,如if (condition) {some code; break}
,do {if .. break; if .. break..;} while(false)
模式与同等嵌套ifs相比更加清晰。
在5年以上的PHP编程中,我从来不必在switch语句之外使用break。
继续有时用于跳过迭代中的第一个或最后一个项目,但我不太喜欢它。
他们为什么再次引入GOTO?这是一个耻辱
要回答这个问题,在
if (!empty($var))
break;
为什么(在方法方面如果)不使用回
if (!empty($var))
return false;
我觉得这种方式多清晰,使得来电者知道里面发生了什么。对于参数错误更好的使用方法是使用Excecptions,这可以在执行时突破它们提出的要点。
只要它有助于使代码更易于阅读和理解,使用break
或continue
是完全正确的。我个人很少使用它们,只有当我不能轻易使用另一种结构时。
在大多数while
语句的情况下,很容易通过使用布尔变量作为用于在第一位置的循环中的条件,然后改变其在循环内的值以达到相同的结果作为break
或continue
。
在另一方面,最好的用例为break
,在我看来,是节约,如果你是通过一个数组或一个for
或foreach
块类似的迭代,并仅在处理元件兴趣,直到一些资源项目已到达。通过在到达此元素后使用break
,可以通过跳出循环来节省处理能力,而无需通过其余元素。这使得代码更加高效,而不会使其不易读取。
当然,如果没有break
,则使用switch
语句实际上是不可能的。
另一个例外是如果您需要控制嵌套结构,在这种情况下,使用break n
或continue n
比同时操作多个变量更简单。 (尽管这个用例可能是最有争议的......)
是的。这些陈述是有原因的。 – zneak 2010-02-23 00:11:32