if语句系列与嵌套if语句?

时间:2016-01-12 22:41:32

标签: objective-c if-statement

只是想知道一系列if语句之间是否有任何区别,而不是一堆嵌套的if语句,其中每一个都是从前一个缩进的?同样适用下降吗?

3 个答案:

答案 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条件,或者甚至更好地选择其他控制逻辑(例如ifswitch),那会更好。

答案 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;因为cond1cond2可能会被多次评估,但这样做会使CPU周期(价格便宜)与程序员时间(价格昂贵)和错误(甚至可能更贵)进行交易)。