ガード節とは
プログラミングの手法で、 特殊な条件を最初に処理することで、コードを分かりやすくする手法です。
例
例えば以下のようなコードがあります。 ifのネストができてしまっています。
public void addUser(String firstName, String lastName) {
if (firstName != null && !firstName.isEmpty()) {
if (lastName != null && !lastName.isEmpty()) {
// ここに処理を記述
} else {
throw new IlleaglArgumentException("lastNameが空です。");
}
} else {
throw new IllegalArgumentException("firstNameが空です。");
}
}
この場合、以下のように書き換えると、ネストがなくなってスッキリします。
public void addUser(String firstName, String lastName) {
if (firstName == null || firstName.isEmpty()) {
throw new IllegalArgumentException("firstNameが空です。");
}
if (lastName == null || lastName.isEmpty()) {
throw new IllegalArgumentException("lastNameが空です。");
}
// ここに処理を記述
}
リファクタリング
名著「リファクタリング」でもこの手法が紹介されています。 250ページの「ガード節による入れ子条件記述の置き換え」です。
Optionalと相性が悪い
Swiftのように専用の構文がある場合は別ですが、 JavaのOptionalはガード節と相性が悪いです。
以前ちょっとコードを書いてみましたが、 ライブラリにするにはちょっと微妙な感じですね。