只是想知道一系列if语句之间是否有任何区别,而不是一堆嵌套的if语句,其中每一个都是从前一个缩进的?同样适用下降吗?
答案 0 :(得分:2)
关键是确保获得您想要的结果。如果您测试的所有内容在逻辑上都是独立的,那么您可以将所有if语句放在一行中。然而,通常情况下,被测试的条件是相互关联的;然后使用嵌套的if语句表达逻辑通常更简单。
创建测试用例非常值得通过逻辑运用所有可能的路径,以确保条件代码在所有情况下都能为您提供所需的结果。
您最重要的考虑因素是让您的代码正常运行 - 然后让那些必须维护代码的人轻松理解您的代码。只有在测量结果证明这段代码耗费大量时间后才能实现性能考虑。
答案 1 :(得分:2)
这完全取决于您的具体情况。如果没有任何关于你情况的例子,很难帮助你。
通常,串联多个<p><a href="#">http://stackoverflow.com/questions/34754716/how-to-fit-a-paragraph-tag-inside-its-parent-container</a></p>
条件会增加执行时间,并且会被视为微不足道的逻辑。
如果您可以重新组织逻辑以便使用嵌套if条件,或者甚至更好地选择其他控制逻辑(例如if
或switch
),那会更好。
答案 2 :(得分:2)
if语句有几种样式。 1.&#34;布什&#34;:
if(cond1)
{
if(cond2)
{
if(cond3)
action123;
else action123b;
}
else {
if(cond3b)
action12b3;
else action12b3b;
}
}
else {
/* ... */
}
2:if if / else chain:
if(cond1)
{
action 1;
}
else if(cond2)
{
action 2;
}
else if(cond3)
{
action 3;
}
else if(cond4)
/* ... */
if if / else chain with&#34; rigid&#34;压痕:
if(cond1)
{
action 1;
}
else {
if(cond2)
{
action 2;
}
else {
if(cond3)
{
action 3;
}
else {
/* ... */
就我而言,关于良好编程风格的普遍共识是&#34;浓密&#34;像#1这样的树很差 - 他们很难 很难理解。 (如果他们“深入2级,三级难以理解,4级基本不可能”,他们几乎无法理解。)
普遍的共识是,#2中的长if / else链更容易理解。它是如此明显的成语,值得我按照#2中的方式呈现它,不更多&#34;逻辑&#34;介绍如#3。
浓密的树木很难被理解,我有时将它们转换成链式的if / else形式:
if(cond1 && cond2)
{
/* action if both true */
}
else if(cond1 && !cond2)
{
/* action if only cond1 true */
}
else if(!cond1 && cond2)
{
/* action if only cond2 true */
}
else {
/* action if neither true */
}
效率较低&#34;因为cond1
和cond2
可能会被多次评估,但这样做会使CPU周期(价格便宜)与程序员时间(价格昂贵)和错误(甚至可能更贵)进行交易)。