令人困惑的缩进,为什么以及如何发生

时间:2015-12-04 12:30:19

标签: java if-statement warnings indentation

这实际上不是解决问题的方法,但我感到好奇的是,为什么下面的代码会给出confusing indentation警告,可能会遗漏周围的区块:

if(x!=y)
System.out.println("not equal"); 
index++;

如果我将System.out.println("not equal");置于{}内,警告就会消失,但我对目前看起来代码出错的情况感到好奇。

2 个答案:

答案 0 :(得分:4)

问题在于,当您阅读此代码时,您错过了一个视觉提示,System.out.println("not equal");仅在条件(x!=y)为真时运行。当你缩进代码时,错误也会消失:

if (x != y)
   System.out.println("not equal");

有些人可能仍然建议不要使用单行后果,并鼓励你无论如何使用积木。人们可能只想在System.out下添加另一行代码,认为它也会在x != y时执行 - 而不会注意到大括号丢失。

答案 1 :(得分:2)

if语句中的任何内容通常都是为了清晰而缩进。例如:

if(foo) {
    if (bar) {
       System.out.println("foo bar");
    }
}

由于您只编写1行语句,因此不需要{},但仍建议使用缩进。没有它,不会立即明白什么将会被执行,哪些不会被执行。

例如,如果读取您的代码的人不知道在没有括号的if语句中只执行了1行,他们可能会认为只有index++; <才会调用(x!=y)行。 / p>

此外,如果不对所有if语句使用{},则更有可能成为开发人员。如果你养成不使用它们的习惯,并且忘记将它们用于多行if语句,你将得到意想不到的结果。例如,如果您决定在if System.out.println("not equal");中放置一些内容,那么很容易忘记{}