我的问题与this previous question有关,但所提供的解决方案并未解决我在下面概述的问题。谷歌搜索后,我没有找到任何代码样式指南,解决if语句中的长条件的具体问题。
if( isNull(value1) ||
isToLong(value1) ||
hasBadFormat(valule1)){
doSomething();
}else{
doSomethingElse();
}
OR:
if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1) ){
doSomething();
}else{
doSomethingElse();
}
我对这两种风格的问题是,我的眼睛很难找到真正的块中的代码并将其与条件分开,或者眼睛很难确定正确的下一行。 long条件单行,特别是如果if语句已经缩进函数或其他if语句中的几个选项卡。
最好是做这样的事情:
if( isNull(value1) ||
isToLong(value1) ||
hasBadFormat(valule1)){
doSomething();
}else{
doSomethingElse();
}
或者这种风格会更好地以下列方式之一缩进每个新条件:
if( isNull(value1) ||
isToLong(value1) ||
hasBadFormat(valule1)){
doSomething();
}else{
doSomethingElse();
}
if( isNull(value1)
|| isToLong(value1)
|| hasBadFormat(valule1) ){
doSomething();
}else{
doSomethingElse();
}
是否有人采用编码风格指南(可能是公司编码风格政策)以与我提议的方式不同或更好的方式解决此问题?哪一个更好,你能找到我提到的解决方案的任何缺点或优点吗?
答案 0 :(得分:24)
这样的事情怎么样?
bool isValid = isNull(value1) || isToLong(value1) || hasBadFormat(valule1);
if( isValid )
{
doSomething();
}
else
{
doSomethingElse();
}
条件被移动到另一行,这可能使它更容易阅读。
答案 1 :(得分:13)
if( isNull(value1) ||
isToLong(value1) ||
hasBadFormat(valule1))
{
doSomething();
}
else
{
doSomethingElse();
}
现在你可以轻松地看到真正的阻挡。
当然,我更喜欢:
if( isNull(value1)
|| isToLong(value1)
|| hasBadFormat(valule1))
{
doSomething();
}
else
{
doSomethingElse();
}
: - )
答案 2 :(得分:8)
显而易见的解决方案是将开放式支架移动到下一条线上,正如上帝所预期的那样!
</flamebait>
答案 3 :(得分:6)
这是我更喜欢的选择:
if(
isValid = isNull(value1) ||
isToLong(value1) ||
hasBadFormat(valule1)
) {
doSomething();
}
else {
doSomethingElse();
}
答案 4 :(得分:2)
这实际上取决于你工作的人的偏好和惯例,但前两个是我见过的两种最常见的形式。我倾向于将条件移动到多行,只要它长到需要在我的ide中左右滚动。
这就是我写它的方式:
if(isNull(value1) ||
isToLong(value1) ||
hasBadFormat(valule1))
{
doSomething();
}
else
{
doSomethingElse();
}
除非条件不足以迫使我滚动查看全部内容。如果没有,我会这样做:
if(isNull(value1) || isToLong(value1) || hasBadFormat(valule1))
{
doSomething();
}
else
{
doSomethingElse();
}
在这种情况下,由于它似乎足够短,我会做后者。
答案 5 :(得分:1)
我倾向于将操作员放在行的开头,这样他们就可以了。
所以,这是一个建议:
if(isNull(value1)
|| isTooLong(value1)
|| hasBadFormat(valule1))
{
doSomething();
} /* if */
else
{
doSomethingElse();
} /* else */
这是另一个:
if(0
|| isNull(value1)
|| isTooLong(value1)
|| hasBadFormat(valule1))
/* ...etc... */
(对于&amp;&amp;,if if(1&amp; a&amp;&amp; b)等)
或者这个:
if
(
isNull(value1)
|| isTooLong(value1)
|| hasBadFormat(valule1)
)
/* ...etc... */
答案 6 :(得分:0)
我亲自设置所有if
语句的格式,无论长度如何:
if (isNull(value1) || isToLong(value1) || hasBadFormat(value1)) {
doSomething();
} else {
doSomethingElse();
}
答案 7 :(得分:-3)
我可能是唯一一个这样做的人。它被称为Horstmann风格,但我做的略有不同。
if (bool) // comment
{ dothis;
andthis;
} else if (bool) // comment
{ dothis;
andthis;
} else // comment
{ dothis;
andthis;
}