辞書: ガード節

投稿日:

ガード節とは

プログラミングの手法で、 特殊な条件を最初に処理することで、コードを分かりやすくする手法です。

例えば以下のようなコードがあります。 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はガード節と相性が悪いです。

以前ちょっとコードを書いてみましたが、 ライブラリにするにはちょっと微妙な感じですね。