令人困惑的缩进,为什么以及如何发生
Confusing indentation, why and how it can happen
这实际上不是要解决的问题,但我很好奇为什么下面的代码会给出 confusing indentation
可能丢失周围块的警告:
if(x!=y)
System.out.println("not equal");
index++;
如果我将 System.out.println("not equal");
放在 {}
中,警告就会消失,但我很好奇当前看起来的代码在什么情况下会出错。
问题是,当您阅读这段代码时,您会错过一个视觉提示,即当条件 (x!=y)
为真时,System.out.println("not equal");
仅是 运行。当您缩进代码时,错误也会消失:
if (x != y)
System.out.println("not equal");
有些人可能仍然建议不要使用单行结果并鼓励您无论如何都使用块。人们可能会想在 System.out
下添加另一行代码,认为它也会在 x != y
时执行 - 而没有注意到缺少大括号。
为了清楚起见,if 语句中的任何内容通常都会缩进。例如:
if(foo) {
if (bar) {
System.out.println("foo bar");
}
}
由于您只写了 1 行语句,因此不需要 {}
但仍建议缩进。没有它,将不会立即执行什么将不会立即显而易见。
例如,如果阅读您的代码的人不知道在没有括号的 if 语句中只有 1 行 get 被执行,他们可能会认为 index++;
行只有在 (x!=y)
此外,如果您不对所有 if 语句都使用 {}
,作为开发人员,您更容易犯错误。如果你养成了不使用它们的习惯,而忘记将它们用于多行 if 语句,你会得到意想不到的结果。例如,如果您决定在 if 块中的 System.out.println("not equal");
之后放置一些内容,那么很容易忘记 {}
.
这实际上不是要解决的问题,但我很好奇为什么下面的代码会给出 confusing indentation
可能丢失周围块的警告:
if(x!=y)
System.out.println("not equal");
index++;
如果我将 System.out.println("not equal");
放在 {}
中,警告就会消失,但我很好奇当前看起来的代码在什么情况下会出错。
问题是,当您阅读这段代码时,您会错过一个视觉提示,即当条件 (x!=y)
为真时,System.out.println("not equal");
仅是 运行。当您缩进代码时,错误也会消失:
if (x != y)
System.out.println("not equal");
有些人可能仍然建议不要使用单行结果并鼓励您无论如何都使用块。人们可能会想在 System.out
下添加另一行代码,认为它也会在 x != y
时执行 - 而没有注意到缺少大括号。
为了清楚起见,if 语句中的任何内容通常都会缩进。例如:
if(foo) {
if (bar) {
System.out.println("foo bar");
}
}
由于您只写了 1 行语句,因此不需要 {}
但仍建议缩进。没有它,将不会立即执行什么将不会立即显而易见。
例如,如果阅读您的代码的人不知道在没有括号的 if 语句中只有 1 行 get 被执行,他们可能会认为 index++;
行只有在 (x!=y)
此外,如果您不对所有 if 语句都使用 {}
,作为开发人员,您更容易犯错误。如果你养成了不使用它们的习惯,而忘记将它们用于多行 if 语句,你会得到意想不到的结果。例如,如果您决定在 if 块中的 System.out.println("not equal");
之后放置一些内容,那么很容易忘记 {}
.