If statement 单行if语句
我最近与一位同事发生了一场争论,涉及一行if语句,我想看看stackoverflow的想法 您是否认为该声明应写为:If statement 单行if语句,if-statement,If Statement,我最近与一位同事发生了一场争论,涉及一行if语句,我想看看stackoverflow的想法 您是否认为该声明应写为: if(condition) { statement = new assignment; } 或 请为您的决定提供一个很好的理由。如果您真的应该使用一行,如果 if(condition) statement=new assignment; 因为它只有一行,所以它应该包含一个操作。我一直都喜欢大括号。如果有人修改单行If语句,如下所示: if(condition) s
if(condition)
{
statement = new assignment;
}
或
请为您的决定提供一个很好的理由。如果您真的应该使用一行,如果
if(condition) statement=new assignment;
因为它只有一行,所以它应该包含一个操作。我一直都喜欢大括号。如果有人修改单行If语句,如下所示:
if(condition) statement=new assignment;
到
你不会得到预期的行为
使用大括号可以确保如果有人修改if语句,他们会确保将正确的语句放在正确的位置。我总是使用一行
if
无括号语句。括号的出现表明(从语法上来说是正确的)“哦,我可以在这里做其他事情……”我不喜欢这种诱惑。任何涉及多条语句的内容都应该用适当的括号分成多行。我总是使用括号来减少有人(包括我自己)以后引入错误的风险,方法是编辑if语句周围的代码,而不仔细注意哪一行属于if条件的一部分
编辑:
下面是一个活生生的例子,如果我碰巧在一些旧代码中遇到:
if (form.validateUpload (messages, this))
return getErrorOutcome (ctx, messages);
if (LOG.isInfoEnabled ())
LOG.info ("CREATING UPLOAD");
请注意,这两个“if”语句都位于主代码块中,但由于格式不佳,乍一看它们似乎是嵌套的。当然,任何一个“优秀”的程序员都应该很快看到正在发生的事情,但为什么会造成任何不必要的混乱呢?我不想使用括号 需要括号的唯一原因是如果块中有多个语句 不过,这听起来像是在浪费争论
if(condition)
statement=new assignment;
或
一般来说,我讨厌一行ifs,除了这个Perl例子
operation if condition;
这实际上取决于您组的编码风格。集团应具有一致的编码标准。对于我当前的团队,我们始终使用:
if (condition) {
statement = new assignment;
}
我们这样做是为了防止由于忘记if语句后的大括号而导致的错误,例如:
if (condition)
statement1;
statement2;
//statement2 is not part of the if statement, but it looks like it because of wrong indentation
另一个我最近工作过的小组总是对一行if语句使用这种语法:
if (condition)
statement1;
就我个人而言,我不太喜欢这个,因为它不太明确;但最重要的是,要坚持团队或项目的统一编码标准,这样,您编写的代码看起来就像您的同事编写的代码,对团队中的每个人来说都同样容易阅读
IDE或环境的约定可以为您的编码标准提供良好的基础,甚至可以根据您的组的风格进行定制。我有自动格式设置来消除您的一行代码,这将它放在两行上。因此,它需要支架
if (condition)
{
statement = new assignment;
}
这就是我要写的。这是因为我喜欢整洁的代码,这样可以节省阅读/编辑/理解的时间
在极少数情况下,只有当我快速而肮脏地编写调试代码时,我才会破例
一行if语句总是很容易被分号的放置方式破坏。我总是用括号括起来,而且我从不编写一行if,我的方法如下
if(condition) {
statement = new assignment;
}
因为我编写Java代码,这是该语言的惯例。检查:
注意:if语句始终使用大括号
{}. 避免以下容易出错的错误
表格:
括号的使用可以防止错误:有些人可能会在以后添加新的句子,这些句子会在出现条件时被执行,并且忘记括号,因为基本上,如果你需要括号,你就不会把它写在一行中。请永远不要这样做。这是纯粹的癌症,如果你必须调试的话。调试时,您永远无法确切知道条件是否为真,语句是否已设置!你总是需要检查。即使是最坏的情况,如果在
if
。。。对于这样做的人来说,地狱里肯定有一个特别的地方。调试起来非常可怕,而且绝对不容易阅读。这个想法是为了防止人们在没有大括号的if中添加语句。我个人只在休息和继续时使用它,不允许在没有支架的情况下使用if。如果调试器不能在一行中执行两条语句,我认为您需要升级调试器。如果有人这样做,他们显然不懂该语言。这不属于基本能力吗?(本意)理解语言和拼写错误彼此无关。添加大括号可以确保正确的行为发生。可能是一名初级程序员,在代码首次编写后能够很好地维护代码。也可能是一个高级程序员度过了糟糕的一天。为什么要给别人制造一个犯错的机会呢?所以你建议在代码中乱扔许多不必要的大括号。@Alan-我们不能用白痴来证明我们的代码。任何不了解这种基本语言行为的人都需要快速地学习这种语言。他们显然不知道这一点,也不应该玩弄你的代码,他们引入的任何bug都可以a)由有能力的人轻松修复,b)有可能教给他们一些他们显然需要艰苦学习的东西。我使用的是单行模式,从来没有被这种特殊的错误所困扰。这是一个如此广泛和广泛的警告,防止“抓到你了”,以至于没有人再爱上它。重复:,,和许多其他。通过编辑,你已经完全改变了这个问题;-)我查看了编辑历史记录,在您提出问题后,有两次编辑:一次是重新标记,另一次是代码格式化,试图使其成为实际问题。整体意义没有改变。@geowa:当然改变了。“格式化”代码改变了问题的性质。主题指的是“一行if语句”。第一个例子现在有三行,第二个例子有两行。@Adam:如果你看一下原来的问题,它写出来的和现在的一模一样。但是OP没有代码格式
if (condition)
statement1;
if (condition)
{
statement = new assignment;
}
if(condition) {
statement = new assignment;
}
if (condition) //AVOID! THIS OMITS THE BRACES {}!
statement;