如果我遵循以下代码,需要知道良好的做法

时间:2016-11-14 07:58:26

标签: c return time-complexity

我的代码为:

 int good_practice(void)
    {
      if (somethings == TRUE)
       return true;  //i am asked to remove it coz it will reach anyhow at end and do same but i feels it is good practice and why should i wait for end?
      else
       return false
      }
     }
     return true; 
    }

我被要求删除第一次返回,因为它最终会到达功能结束并返回true。这很好吗?

我觉得为什么我需要等待cpu进入功能结束并返回虽然我可以提前做。如果我决定以某种情况返回,为什么我应该从最后回来为什么不在那里为什么不等结束?

而且如果我等待结束,我会增加时间复杂度(我知道它不会有任何区别)但是没有增加指令。

请帮助我摆脱这种混乱?

2 个答案:

答案 0 :(得分:2)

这被称为“早期回归”,我认为没有明确的共识。

优点:

  • 如果您提前返回,则无法错误地执行其他代码。
  • 如果您正在阅读此特定执行分支,则提前返回会使流程更明确。
  • 也可以通过提前返回来降低缩进级别。

缺点:

  • 当你看整个功能时,更容易错过早期回归。

以前有一些类似的早期回归问题see here for example

答案 1 :(得分:1)

系统会要求您删除第一个return true,因为您可以像这样检查,而不会有额外的冗余return true

int good_practice(void) {
    if(!somethings) { 
        return false;
    }
    return true;
}

无论如何,有问题的代码非常多余

您可以使用更好的版本替换它,例如:

int good_practice(void)
{
    return somethings;
}

关于早期回归:

通常最好在最后获得一次回报,因为通过返回,在早期返回时获得的性能远远不及获得的可读性。

(这只是我自己的经历)。