单语句条件 – 为什么模式不用于其他代码块?

只是想到我会看到有人能解释为什么Anders认为这是有效的……

if(...) //single statement else ///single statement 

但这不是……

 try //single statement catch //single statement 

要引用框架设计指南中关于“通用样式约定”的部分,请参阅大括号:

即使语言允许,也要避免省略大括号。 大括号不应视为可选。 即使对于单个语句块,也应该使用大括号。 这增加了代码的可读性和可维护性。

省略大括号可能是可以接受的情况非常有限,例如在现有的单行语句之后添加新语句是不可能或非常罕见的。 例如,在throw语句之后添加语句是没有意义的:

if(someExpression) throw new ArgumentOutOfRangeExcetion(...);

该规则的另一个例外是case语句中的大括号。 这些大括号可以省略,因为casebreak语句表示块的开始和开始。

安德斯认为主观和议论是什么,这是建议。

您可能还想查看msdn上编码约定中有关支撑的部分。

可能是因为单个语句条件在大括号语言中历史上有效,但其他模式则不然。

由于任何一个示例都使代码的可读性降低,因此没有充分的理由引入单个语句支持,而不是历史上必要的。

如果您对大量代码块的扩展单语句支持进行映像,则可以很容易地看到某人编写完全无法读取的代码。 我个人也会避免第一个案例。