if的风格:嵌套或不嵌套

Mar*_*rco 7 coding-style nested

我和我的一位同事讨论了以下最佳实践问题.
大多数函数/方法都以一些参数检查开始.

我主张以下样式,避免嵌套.

if (parameter one is ugly) return ERROR;
if (parameter two is nonsense || it is raining) return ERROR;
// do the useful stuff
return result;
Run Code Online (Sandbox Code Playgroud)

来自更多功能/逻辑编程背景的他更喜欢以下内容,因为它减少了函数退出点的数量.

if (parameter one is ok) {
   if (parameter two is ok && the sun is shining) {
      // do the useful stuff
      return result
   }
}
return ERROR;
Run Code Online (Sandbox Code Playgroud)

你更喜欢哪一个?为什么?

Fre*_*örk 12

我个人更喜欢第一种风格,因为我觉得它在我们可以称之为"错误情况"和"方法逻辑"之间提供了一些逻辑分离.在方法的开头有一个定义良好的块,用于评估和处理输入中的任何错误,然后方法的其余部分都是关于该方法应该实际执行的操作.

我想这是微观层面上的某种关注点分离.


b.r*_*oth 5

只要样式在代码库中是一致的,这两种样式中的任何一种都适合我.


Del*_*ani 0

我通常更喜欢第二个,除非整个函数体将包含在 X 条if语句中。如果是这样,我会选择第一个选项。