C# 单语句条件-为什么该模式不用于其他代码块?
我只是想看看是否有人能解释为什么安德斯认为这是有效的C# 单语句条件-为什么该模式不用于其他代码块?,c#,C#,我只是想看看是否有人能解释为什么安德斯认为这是有效的 if(...) //single statement else ///single statement 但这不是 try //single statement catch //single statement 可能是因为单语句条件在花括号语言中历史上是有效的,但其他模式则不然 由于这两个示例都会降低代码的可读性,因此没有充分的理由进一步引入单语句支持 如果您将单语句支持扩展到许多代码块,您很容易看到有人在编写完全不
if(...)
//single statement
else
///single statement
但这不是
try
//single statement
catch
//single statement
可能是因为单语句条件在花括号语言中历史上是有效的,但其他模式则不然 由于这两个示例都会降低代码的可读性,因此没有充分的理由进一步引入单语句支持 如果您将单语句支持扩展到许多代码块,您很容易看到有人在编写完全不可读的代码。就我个人而言,我也会避免第一种情况。在“常规样式约定”一节中引用关于大括号的内容: 避免省略大括号,即使语言允许。不应使用大括号 被认为是可选的。即使是 单语句块,您应该 使用大括号。这是增加代码 可读性和可维护性 有非常有限的情况下 省略大括号可能是可以接受的, 例如添加新语句时 在现有的singöe-line之后 声明要么是不可能的,要么是不可能的 非常罕见。例如,它是 在后面添加语句没有意义
throw
语句:
if(someExpression)抛出新
参数超出范围(…)代码>
该规则的另一个例外是
case语句中的大括号。这些
大括号可以省略为大小写
和
break
语句表示
开始和块的开始
安德斯认为的是主观的和有争议的,这就是建议
你可能还想看看《学究》中关于支撑的部分:它不是“一行”,而是“一句话”@Marc:我不认为这是学究式的区别。事实上,我怀疑这就是问题的真实答案。@Cody-好吧,你可以说在try中有一个陈述,在catch中有一个陈述。。。别误会我;我想要牙套;如果我们能摆脱单语句/复合语句的混乱局面,那岂不是太好了@戴维德。对我来说,不是。我发现像这样的单语句代码块同样可读——事实上,我发现它们更可读,因为它减少了代码中不必要的行数。当我想分离代码时,我会创建一些空白。