Syntax 关于如何格式化长if语句的愚蠢问题

Syntax 关于如何格式化长if语句的愚蠢问题,syntax,Syntax,对于占用多行的长if语句,是否将AND或or这样的条件放在新行上: if (something && something else) if (something && something else) if ( A == B && ( C == D || E == F ) &&

对于占用多行的长if语句,是否将AND或or这样的条件放在新行上:

               if (something
                   && something else)
               if (something &&
                   something else)
if (  A == B
&& (  C == D
   || E == F
   )
&&    Z >  Y
) {
    ...
  }
else
  {
    ...
  }
或者像这样:

               if (something
                   && something else)
               if (something &&
                   something else)
if (  A == B
&& (  C == D
   || E == F
   )
&&    Z >  Y
) {
    ...
  }
else
  {
    ...
  }

我通常采用第二种方式,因为我可以排列语句。然而,在编写代码时,只要保持一致,任何一种方法都可以

我更喜欢第一个的版本。我的理由是,出于任何测试目的,通过剪切/粘贴/注释删除条件更容易。注释掉一行要比从上面的行中删除和并注释掉一行容易得多。当我在SQL中使用WHERE子句时,它比任何其他给定语言中的if语句都要多,但类似。

对于复杂的条件,考虑将其提取到函数或变量:

if (complexCondition(foo)) { ..

作为奖励,函数或变量的名称可用于传达条件的含义。这使您的代码更易于阅读。

考虑到我的缺点,我首先会避免长if测试。我宁愿做这样的事情:

bool fTest1 = A == B ;
bool fTest2 = C ;
bool fTest3 = f(1,2,3) ;
bool fSuccess = ( fTest1 | ftest2 ) & fTest3 ;
if ( fSuccess )
...
否则类似这样的事情:

               if (something
                   && something else)
               if (something &&
                   something else)
if (  A == B
&& (  C == D
   || E == F
   )
&&    Z >  Y
) {
    ...
  }
else
  {
    ...
  }
当然是YMMV


前者更容易调试、测试、记录等。

我通常使用IDE格式化程序格式化,然后重新排列一点,使其看起来更漂亮。

我从来没有想过这样做。我是一个非常新的程序员,所以这可能也是一个愚蠢的问题,但与很长的if语句相比,让这些额外的变量占用内存空间会不会更大?除非它成为一个问题…谁在乎呢?内存很便宜。人们试图整理或理解问题的时间并不多。@Frodo它是非常微不足道的,因为它们是局部变量,它们只会超出范围而被回收@尼古拉斯是我喜欢的第一个,但第二个就像我说的:YMMV。我更喜欢GNU风格的缩进,缩进级别为两个空格,这样可以使所有内容都很好地对齐。将AND运算符带到if级别的原因是为了在视觉上将整个表达式绑定在一起。缩进OR运算符的原因是为了使运算符优先级在视觉上清晰可见。对于人类来说,空格和顺序对于理解至关重要。