Guard子句或前置条件(您可能会看到)进行检查以查看是否满足特定条件,然后中断程序流程。它们非常适合您仅对if
声明的一个结果感兴趣的地方。因此,与其说:
if (something) {
// a lot of indented code
}
您逆转条件,并在满足逆转条件时中断
if (!something) return false; // or another value to show your other code the function did not execute
// all the code from before, save a lot of tabs
return
远不及肮脏goto
。它允许您传递一个值,以显示该函数无法运行的其余代码。
您将看到在嵌套条件下可以应用的最佳示例:
if (something) {
do-something();
if (something-else) {
do-another-thing();
} else {
do-something-else();
}
}
vs:
if (!something) return;
do-something();
if (!something-else) return do-something-else();
do-another-thing();
您会发现很少有人争辩说第一个是更干净的,但当然,它是完全主观的。一些程序员喜欢通过缩进来了解某事物在什么条件下运行,而我宁愿保持方法流程线性。
我暂时不会建议先验会改变您的生活或使您被打败,但您可能会发现代码更容易阅读。