单个语句函数的保护子句?

Guard clause for a single statement function?

在满足条件的情况下,编写有效执行一条语句的非常简单的函数的最易读的方法是什么?

我觉得最易读的是:

function doSomething(myNumber){
    if(myNumber !== null && myNumber > 5){
        doTheThing();
    }
}

然而,我的同事坚持认为保护子句使任何东西更具可读性,并且总是这样写这个函数:

function doSomething(myNumber){
    if(myNumber === null || myNumber <= 5)
        return;
    doTheThing();
}

我知道保护子句在更大的函数中可以更具可读性,特别是如果需要检查多个条件,and/or 如果需要抛出异常。但是在这种情况下,我总是必须三思而后行才能理解在什么情况下会执行 doTheThing(),这对于这么简单的函数来说似乎很荒谬。

这不是真正的技术问题,而是风格的选择。

您可以通过多种方式编写该函数,编译器会尽可能地优化它。至于“可读性”,这完全取决于程序员的选择。只要遵循语言规则和标准,那么任何选择都可以。当然,如果你在团队中工作,最好就某种风格达成一致,这样每个人都可以在代码上工作而不会感到困惑。

就个人而言,如果我真的想让它可读,我会这样做:

function doSomething(myNumber)
{
   if(myNumber != null && myNumber > 5)
   {
       doTheThing();
   }
}

另一方面,如果我想要更少的代码行,我会选择这个:

function doSomething(myNumber)  {
    if(myNumber == null || myNumber <= 5)  return;
    doTheThing();
}

同样重要的是要考虑 if 语句应该如何。在这种情况下,您涵盖了所有可能性,但请记住这一点以避免意外错误。