回答你的问题,没有什么好的理由去拥有一个什么也不做的东西。这样想,用
return
后面的注释代替
break
来说“别忘了”将会产生相同的效果——没有任何影响。这样说起来听起来很傻,对吧?
除非你需要设置一个变量以便稍后使用,否则我建议你所采用的方法是完全可以的。我在看代码时两秒钟内就知道了它的意图。使用
break
只会造成混乱。
实际上,并没有一种大小适合所有情况的方法。正确的方法取决于哪个适合该场景。在每个
case
中设置一个变量并使用
break
可能是正确的方式,或者只返回也是有意义的。
关于其他答案中提出的一些观点:
1) 在return
后没有break
可能会导致以后代码发生问题
尽可能使代码明确,易读和清晰。我们还可以编写代码以使将来的更改更容易。但是,在像switch
这样简单的情况下,重构稍后的case
以添加或删除return
或break
应该不成问题。
实际上,如果您删除了一个return
并且“没有注意到没有break
”,那么这是一个错误,可能发生在编码的任何部分。没有什么能够拯救你。而且,编写未来潜力的代码时应该非常小心,因为那种潜力可能永远不会发生,或者其他事情可能会发生,您最终只需维护过时的代码多年。
同样,这也被认为是未来更改的安全网 - 如果您删除了return
,并且意外留下了应该删除的安全网break
呢?
即使这个switch语句是生死攸关的真正严肃的代码,我也反对在return后添加“无意义”的break。只要确保任何在代码上工作的人都知道他们在做什么,并且经过了足够多的代码审查和完整测试。
如果情况如此严峻,那么您将设置额外的检查,而不是提出用于捕捉粗心开发人员的建议性安全网。
主张在return之后添加break会增加安全保障,这意味着您没有正确编码或测试。如果这是被认为有用的安全保障,那么可能存在大量的漏洞在代码中,可能更为严重的地方。
“防御性编程”的维基百科文章被链接到,但这与本文无关:
防御式编程是一种旨在确保软件在不可预见情况下持续运行的防御性设计。
保留安全网中的
break
不是意外情况或防御性编程的情况。这只是糟糕的编码方式,而且你不能在代码中添加备用代码以防万一在更改某些内容时编码不正确。这是编码的糟糕方法。"如果有人删除了return它就无法工作"的论点,那么您也可能在case变量中拼写错误,或者忘记编写case,或...。
return
返回,您不会进行"防御性"编码以避免返回失败。那意味着PHP出现了问题,而你不会在代码中添加安全网来应对这种情况。这是你在更高层次上所拥有的东西。
但是,在
return
之后添加
break
可以使其明确。但这是明显错误的。
return
返回,因此
break
不会发生。对我来说,这是令人困惑的时刻,我会想知道是否错过了意图,不过不会太久,因为很清楚将会发生什么,但是会有一个瞬间,我会思考一下以确保没有错过任何东西。
虽然在同一个case语句中使用return和break不是无效或错误的,但它完全没有意义,因为break什么也没做。这是毫无逻辑的无用代码,需要查看、维护和解决。
如果明确的目标是核心,并且在return后面添加break让你感到不爽,因为它毫无意义,那么我建议设置一个变量并使用break,然后在退出switch后返回该变量。
像@RageZ的回答
https://dev59.com/6XM_5IYBdhLWcg3wTRLL#1437476所示。
3) 在 switch 语句完成后设置一个变量并返回
这种方法没有任何问题,但是如果没有必要将值存储在变量中(稍后使用等),那么当没有必要停留做其他事情时,立即返回是很好的。
这表明了明确的意图 - 在匹配到 case 后立即返回一个值。
return
,而只检查了break
。 - Gumbo