How to indent long conditionals for 'if' statements?
我的问题与前一个问题有关,但提供的解决方案没有解决我在下面概述的问题。在谷歌搜索之后,我没有找到任何代码风格的指导方针来解决类似这样的if语句中长条件的特定问题。
1 2 3 4 5 6 7 | if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)){ doSomething(); }else{ doSomethingElse(); } |
或:
1 2 3 4 5 | if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1) ){ doSomething(); }else{ doSomethingElse(); } |
这两种样式的问题是,我的眼睛很难在真正的块中找到代码并将其与条件分开,或者眼睛很难在一行上的长条件后确定正确的下一行,特别是如果if语句在函数或其他类型的语句中已经缩进了几个制表符,那么F语句。
是否最好这样做:
1 2 3 4 5 6 7 | if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)){ doSomething(); }else{ doSomethingElse(); } |
或者,这种样式更适合用以下任何一种方式缩进每个新条件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)){ doSomething(); }else{ doSomethingElse(); } if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1) ){ doSomething(); }else{ doSomethingElse(); } |
是否有人有一个编码风格的指导方针(也许是公司的编码风格政策),以不同于或更好的方式来解决这个问题?哪一个更好,你能找到我提到的解决方案的任何利弊吗?
像这样的怎么样?
1 2 3 4 5 6 7 8 9 | bool isValid = isNull(value1) || isToLong(value1) || hasBadFormat(valule1); if( isValid ) { doSomething(); } else { doSomethingElse(); } |
条件移到另一行,这可能使阅读更容易。
1 2 3 4 5 6 7 8 9 10 | if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); } |
现在你很容易就能看到真正的街区了。
当然,我更喜欢:
1 2 3 4 5 6 7 8 9 10 | if( isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); } |
-)
显而易见的解决方案是,按照上帝的意愿,将开放式支架移动到下一行!
这是我更喜欢的选择:
1 2 3 4 5 6 7 8 9 10 | if( isValid = isNull(value1) || isToLong(value1) || hasBadFormat(valule1) ) { doSomething(); } else { doSomethingElse(); } |
这真的取决于与你一起工作的人的偏好和习惯,但前两种是我见过的最常见的两种形式。我倾向于将条件行移动到多行,除非它太长,需要在我的IDE中进行左右滚动。
我就是这样写的:
1 2 3 4 5 6 7 8 9 10 | if(isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); } |
除非那个条件不足以迫使我滚动查看全部内容。如果没有,我会这样做:
1 2 3 4 5 6 7 8 | if(isNull(value1) || isToLong(value1) || hasBadFormat(valule1)) { doSomething(); } else { doSomethingElse(); } |
在这种情况下,由于它看起来足够短,我会选择后者。
我倾向于把接线员放在队伍的开始,所以他们都站起来了。
所以,这里有一个建议:
1 2 3 4 5 6 7 8 9 10 | if(isNull(value1) || isTooLong(value1) || hasBadFormat(valule1)) { doSomething(); } /* if */ else { doSomethingElse(); } /* else */ |
这里还有一个:
1 2 3 4 5 | if(0 || isNull(value1) || isTooLong(value1) || hasBadFormat(valule1)) /* ...etc... */ |
(对于&;A&B,如果(1&A&B)等)
或者:
1 2 3 4 5 6 7 | if ( isNull(value1) || isTooLong(value1) || hasBadFormat(valule1) ) /* ...etc... */ |
我可能是唯一这样做的人。它被称为horstmann风格,但我的做法略有不同。
1 2 3 4 5 6 7 8 9 10 | if (bool) // comment { dothis; andthis; } else if (bool) // comment { dothis; andthis; } else // comment { dothis; andthis; } |