友達の依Dâng師に教えてもらって、ガード文(guard clauses)のことを勉強になりました。
ガード文は、if else文をより理解しやすく読みやすくすることができます。
しかし、if文のネストを深くすると、コードが読みにくく編集が困難になります。
if(true){
if(true){
if(true){
if(true){
if(true){
if(true){
}
}
}
}
}
}
こういう時には、ガード文に置き換えることが選択肢になれます。
ガード文の目的は、条件を検証し、条件が満たされない場合にすぐにコードの実行を停止することです1Gélinas, M. (2021年6月14日). Guard Clauses Explained. DEV Community. https://dev.to/maximegel/guard-clauses-explained-13aa。
以下のコードの例を挙げます。
for (int i = 1; i <= 100; i++) {
if (i%3 == 0){
if (i%4 == 0){
if (i%5 == 0){
System.out.println(i);
}
}
}
}
ガード文を使うと、
for (int i = 1; i <= 100; i++) {
if (i%3 != 0){
continue;
}
if (i%4 != 0){
continue;
}
if (i%5 != 0){
continue;
}
System.out.println(i);
}
のようになります。修正前のコードには、条件が成立する場合に次の操作を実行するif文がありました。修正後のコードでは、このif文が条件の反転されたif文に変更されました。条件が成立しない場合は、continue
が実行され、現在のループのイテレーションをスキップして次のイテレーションに入ります。この方法のメリットは、元々if文内で行われる操作がif文の外で行えるようになり、コードのネストレベルが減少することです。
ネストレベルの減少のメリット:
- コードの読みやすさの向上:ネストの減少により、コードがより簡潔で理解しやすくなります。
- メンテナンスの難しさの低減:簡素化されたコード構造は、開発者が潜在的な問題をより簡単に見つけ修正するのに役立ちます。
- コードスタイルの改善:「早期リターン」(early return)と呼ばれるプログラミングパターンに従うことで、よりスッキリし、読みやすいコードを書くことができます。
尾註
- 1Gélinas, M. (2021年6月14日). Guard Clauses Explained. DEV Community. https://dev.to/maximegel/guard-clauses-explained-13aa