这两种代码风格的区别有名字吗?

当我看到别人的代码时,我主要看到两种类型的方法样式。

一个看起来像这样,有许多嵌套的 if:

void doSomething(Thing thing) {
  if (thing.hasOwner()) {
    Entity owner = thing.getOwner();
    if (owner instanceof Human) {
      Human humanOwner = (Human) owner;
      if (humanOwner.getAge() > 20) {
        //...
      }
    }
  }
}

而另一种风格,看起来像这样:

void doSomething(Thing thing) {
  if (!thing.hasOwner()) {
    return;
  }
  Entity owner = thing.getOwner();
  if (!(owner instanceof Human)) {
    return;
  }
  Human humanOwner = (Human) owner;
  if (humanOwner.getAge() <= 20) {
    return;
  }
  //...
}

我的问题是,这两种代码样式有名称吗?如果,他们叫什么。

回答

第二个例子中的提前返回被称为保护子句

在该方法将要执行的实际操作之前,会检查一些先决条件,如果它们失败,该方法会立即返回。它是一种快速故障机制。

关于这些退货声明有很多争论。有些人认为在一个方法中有多个 return 语句是不好的。其他人认为它避免将代码包装在一堆 if 语句中,就像在第一个示例中一样。

我自己的谦虚选项与这篇文章一致:尽量减少返回的数量,但如果它们提高可读性,就使用它们。

有关的:

  • 一个函数应该只有一个 return 语句吗?
  • 更好的 Java 语法:早退还是晚退?
  • 保护条款可能就是你所需要的

以上是这两种代码风格的区别有名字吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>