Replies: 1 comment 1 reply
-
結論的には好みの問題になりますが、コードを読みやすくするための工夫だと思います。 ネストが深いとコードが読みにくく感じるというのは、大体の人が共通している感覚だと思います。 if (条件式) {
return foo;
} else {
return bar;
} もelse部分で不要なブロック(
そのため、elseじゃなくて、単純に if (条件式) {
return foo;
}
return bar; これを扱うESLintのルールとしてno-else-returnというものがあります。 微妙に関連しそうな話としては、Early Return(早期リターン)というテクニックが関係していそうです。 例えば、次のような複雑な条件式を通り抜けたときのみ処理するような場合に、 // aが条件を全てパスときのみ、実際に処理する
const process(a){
if (条件式) {
if (条件式) {
if (条件式) {
// 実際に処理する
}
}
}
} これは言い換えればどれかの条件を満たさなかったとき(条件式がfalse)は処理する必要がないということなります。 上のコードは、次のように条件式のネストをなくしてフラットにかけます。 // aが条件を全てパスときのみ、実際に処理する
const process(a){
if (!条件式) {
return;
}
if (!条件式) {
return;
}
if (!条件式) {
return;
}
// 実際に処理する
} これもif elseのelseを書かないのと同じようにネストを少し無くそうという書き方として似ているものだと思います。 そのため、コードをスッキリ見せたいから、余計なブロック( 次の書籍などで、同じようにネストを減らすテーマがあった気がします。 |
Beta Was this translation helpful? Give feedback.
-
上のコードのように
if文
の条件を満たさなかった場合の処理はelse文
に書くのが正しいと思っていたのですが、下のコードのように単にif文
のブロックの外に書いているコードもよく見かけます。たしかにどちらも同じ結果になるとは思うのですが、パフォーマンスや使い分けの慣習など何か違いがあるのでしょうか?
書籍と直接関係ない、またとても初歩的な質問で申し訳ありません。
Beta Was this translation helpful? Give feedback.
All reactions