【问题标题】:Guard clause for a single statement function?单语句功能的保护子句?
【发布时间】:2021-05-26 20:57:43
【问题描述】:

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

我觉得最具可读性的是:

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

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

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

我知道,在更大的函数中,保护子句的可读性更高,尤其是在需要检查多个条件和/或需要抛出异常的情况下。但是在这样的情况下,我总是需要做三遍才能了解在哪种情况下会执行 doTheThing(),这对于这样一个简单的函数来说似乎很荒谬。

【问题讨论】:

    标签: coding-style readability code-readability human-readable guard-clause


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-06-30
      • 2010-12-08
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多