当前位置:  开发笔记 > 编程语言 > 正文

将大括号放在与单行"if"语句的语句相同的行上是不是很糟糕?

如何解决《将大括号放在与单行"if"语句的语句相同的行上是不是很糟糕?》经验,为你挑选了6个好方法。

因此我知道,总是在if,for等中包含花括号被认为是一种好的做法,即使它们是可选的,如果只有一个后面的语句,因为它更容易意外地执行以下操作:

if(something == true)
    DoSomething();
    DoSomethingElse();

如果你没有把括号快速编辑代码.

虽然这样的事情怎么样:

if(something == true)
{   DoSomething(); }

这样你仍然占用更少的线(IMO提高了可读性)但仍然不太可能从上面意外地犯错误?

我问,因为我不相信我以前见过这种风格的if或循环,但我确实看到它用于C#属性中的getter和setter,如:

public string Name 
    {get;set;}

不要问什么是最好的,因为这太主观了,而只是这是否被认为是可接受的风格,如果不是,为什么不.



1> Stephen Walc..:

当我遇到一行if语句时,我通常跳过卷曲并将所有内容保持在同一行:

if (something == true) DoSomething();

它快速,简单,节省空间.


我只是无法继续这种风格.这意味着如果我看到'如果',我现在有两个地方可以看看它的作用.

2> Nicholas Man..:

代替:

if(something == true)
{   DoSomething(); }

做这个:

if(something == true) {   DoSomething(); }


不,不要那样做.我知道这是一个C#问题,我知道Visual Studio调试器将其作为两个单独的语句进行操作,但在其他语言或调试器中,当您跨过该行时,并不总是清楚是否执行了'then'子句.它可能非常含糊不清.

3> Eclipse..:

我倾向于在自己的行上打开括号,如下所示:

if (condition)
{
   statement;
   statement;
}

所以看到类似的东西:

if (condition)
   statement;
   statement;

立即脱颖而出.如果我只有一个陈述,我就把它留下来

if (condition)
   statement;

如果我有一个额外的声明要添加,请将括号放入.我真的没有看到任何混淆的余地.

将语句放在与条件相同的行上是一个坏习惯,因为在调试时,大多数调试器将整个事件计为一行.(我意识到在C#中并非如此).



4> jonnii..:

如果你在团队中工作,你需要提出一个标准.

我个人喜欢这样做:

if(foo)
    DoSomething();

要么

if(foo) DoSomething();

我没有看到没有牙套的问题.人们引用的原因,你提到的关于在下面的行中添加另一个陈述的那个,是我从来没有参与过的.



5> Brian Ensink..:

很多人建议将两者放在一条线上.这可能会增加可读性,但代价是我认为调试能力下降.我已经通过这种方式编写了大量代码,因此调试起来更加困难.

一些调试器和IDE可能能够跨越单行 - if语句的两个部分并清楚地显示条件是否为真,但许多其他调试器可能将其视为单行,因此很难确定是否为if-声明被称为.

例如,用于C++代码的VS2008调试器将作为单行执行此操作,因此很难确定是否调用了Foo().

if (a==b) { Foo(); }



6> tvanfosson..:

就个人而言,我喜欢我所有的块都有相同的模式.我总是使用ifs的大括号,他们总是开始新的一行.我喜欢自动定义放置{get;的公共属性的习语.组; 在同一条线上.我只是觉得所有的块都以自己的支撑开始,提高了可读性.正如其他人所指出的那样,如果你跨越线路,它也会使调试器更清晰.

如果你不同意,那也没关系,但正如其他人所说的一致.为此,您可能希望在您和您的同事之间共享"代码格式"设置,以便自动格式化使每个人都能保持一致.

我会做:

if (something)
{
   DoSomething();
}

public string MyProperty { get; set; }

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有