使用单行 if 语句的缺点是什么?
What is the downside of using one-line if statements?
我看到大多数代码库在所有情况下都使用括号中的 if 语句,包括在 if 之后只需要执行一个语句的情况。
始终使用括号内的 if 语句是否有任何明显的好处,或者随着时间的推移它是否已成为一种标准?
关于这一点的普遍共识是什么,通过我们的 linter 允许单行 ifs 会不会是一个大错误?
如果你要回到代码里加点东西,你可能会忘记你没有打开括号,你的代码如果超过一行就无法运行。
除此之外,这是一个偏好和格式问题。
这在很大程度上取决于开发人员的偏好,尽管在每个控制块上使用花括号的原因有很多。
首先,它使控制块更具可读性。考虑:
if (some_condition)
runSomeFunction();
runSomeOtherFunction();
由于大多数花括号语言不尊重缩进,这会起作用,但它确实降低了可读性(只有 runSomeFunction()
会出现在控制块中)。比较:
if (some_condition) {
runSomeFunction();
}
runSomeOtherFunction();
其次,当您需要向控制块添加内容时(这几乎总是经常发生),添加卷曲可能会令人沮丧或容易被遗忘,从而导致上述问题。
不过,这些很大程度上取决于偏好,您总能找到例外情况(例如 if (some_condition) runSomeFunction();
,它比上面的第一个示例更具可读性,同时仍然以更简洁的格式实现相同的目标,保留可读性)。
我看到大多数代码库在所有情况下都使用括号中的 if 语句,包括在 if 之后只需要执行一个语句的情况。
始终使用括号内的 if 语句是否有任何明显的好处,或者随着时间的推移它是否已成为一种标准?
关于这一点的普遍共识是什么,通过我们的 linter 允许单行 ifs 会不会是一个大错误?
如果你要回到代码里加点东西,你可能会忘记你没有打开括号,你的代码如果超过一行就无法运行。
除此之外,这是一个偏好和格式问题。
这在很大程度上取决于开发人员的偏好,尽管在每个控制块上使用花括号的原因有很多。
首先,它使控制块更具可读性。考虑:
if (some_condition)
runSomeFunction();
runSomeOtherFunction();
由于大多数花括号语言不尊重缩进,这会起作用,但它确实降低了可读性(只有 runSomeFunction()
会出现在控制块中)。比较:
if (some_condition) {
runSomeFunction();
}
runSomeOtherFunction();
其次,当您需要向控制块添加内容时(这几乎总是经常发生),添加卷曲可能会令人沮丧或容易被遗忘,从而导致上述问题。
不过,这些很大程度上取决于偏好,您总能找到例外情况(例如 if (some_condition) runSomeFunction();
,它比上面的第一个示例更具可读性,同时仍然以更简洁的格式实现相同的目标,保留可读性)。