这两种代码风格的区别有名字吗?
当我看到别人的代码时,我主要看到两种类型的方法样式。
一个看起来像这样,有许多嵌套的 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 语法:早退还是晚退?
- 保护条款可能就是你所需要的