Syntax 关于如何格式化长if语句的愚蠢问题
对于占用多行的长if语句,是否将AND或or这样的条件放在新行上:Syntax 关于如何格式化长if语句的愚蠢问题,syntax,Syntax,对于占用多行的长if语句,是否将AND或or这样的条件放在新行上: if (something && something else) if (something && something else) if ( A == B && ( C == D || E == F ) &&
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运算符的原因是为了使运算符优先级在视觉上清晰可见。对于人类来说,空格和顺序对于理解至关重要。