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

Luc*_*100 7 java

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

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

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

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

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;
  }
  //...
}
Run Code Online (Sandbox Code Playgroud)

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

MC *_*ror 7

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

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

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

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

有关的: