编码风格是指导方针,合法的内容是语言定义所允许的。当他们在编码风格中使用“合法”一词时,只是指他们所接受的内容。例如:
if (condition)
body();
这里特别指出的是缩进与执行混淆的问题,这实际上不是Java语言规范的一部分。换句话说,有人可能会看到
if (condition)
statement1();
statement2();
有些人可能会认为只有在条件成立时才会执行语句1和语句2。请注意,这种想法是错误的;良好的编码风格应该尽量减少其他人可能会犯的心理错误。
是否允许这样做是一个争议点。
if (condition) statement1();
是否应该加空格存在争议。对于许多人来说,这是可以接受的;然而,它实际上面临与上述示例相同的问题。Java不会根据空格的类型或数量做决策,它只会根据任何空格的存在做出决策。换句话说,您可能会通过这种方式使某人困惑。
if (condition) statement1(); statement2();
where语句2总是被执行;希望让他们混淆,认为语句2的执行与条件有关。这样做的原因是
if (condition) statement1();
通常认为这与极其罕见的看到类似语句的做法有很大关系。
if (condition) statement1(); statement2();
但接受非花括号版本并不意味着真正提高代码质量,有时候只是被接受是因为一般人不会写混乱的"all-in-one-line" if语句。
对于if语句,确保人们不会将行为与空格相关联的唯一安全方法是始终插入花括号。
if (condition) { statement1(); } statement2();
这段代码看起来有些奇怪,但它可以提供足够的视觉线索,以防止人们错误地认为语句2的执行取决于语句1。
最后,
if (condition) {
statement1();
}
statement2();
永远不会让任何人感到困惑。唯一可能的代价是存储一些额外的空格字符和添加几条水平输入线。考虑到有多少存储空间可用,我认为存储论点已经死了。屏幕房地产论点仍然存在;但是,有时为了清晰表达一个想法,值得在屏幕上多加几行(而且现在的屏幕比过去大得多)。当考虑到由于阅读代码时的“心理错误”而在追求“错误思路”时浪费的人力成本时,似乎在这里或那里多加一些花括号可以很好地为自己付出。
此外,如果您连续使用大量的if语句,最好使用switch或多态。
if(condition) body(); myconditionalfcn();
(全部在一行)同样糟糕。一个真正健壮的编码风格要求在每个代码块上都加上花括号。 - Edwin Buck