嵌套的 if's:使用 if (x) {statement;} 还是 if (!x) 返回更好;陈述;

Nested if's: is it better to use if (x) {statement;} or if (!x) return; statement;

本文关键字:if 还是 返回 陈述 更好 statement 使用 嵌套      更新时间:2023-09-26
是否

普遍认为使用这样的结构是更好的编程实践

if (x == 1) {
  if (y != 1) {
    [code]
  }
}

或者使用这样的警卫:

if (x == 1) {
  if (y == 1)  return;
  [code]
}

第一种样式具有更合乎逻辑的结构,可以一目了然地确定哪些代码依赖于什么。

但第二种样式会产生更简单的视觉样式和更少的代码行。

第二种风格被认为是坏习惯吗?还是只是一种风格选择?

[更新] 这是重复的

无论你的"家风"说什么。

编码风格的事情是 - 这真的无关紧要,只要它在整个代码中保持一致。以及您所有同事的代码。

清晰是王道 - 如果你的代码清楚它在做什么,那就是好代码。如果不清楚它在做什么,那就是糟糕的代码。(如果每个人都使用不同的风格,那就不清楚了,因此你所有的代码都是糟糕的)。 仅此而已。不要担心保存代码行 - 编译器不在乎。

问题不应该是"使用嵌套if s更好还是使用警卫更好",而是"什么时候使用嵌套if更好,什么时候使用警卫更好"!

两种方式都有优点和缺点。使用 if s 可促进单点出口,但在嵌套较深时可能变得难以阅读。防护装置减少了嵌套,更易于阅读,但创建了多个出口点。

选择哪个并不重要,只要你的功能很短!