Javaソースコードにおいて、if文で肯定的な条件分岐を優先する書き方

Javaソースコードにおけるif文の条件分岐を、ちょっとでもわかりやすく記述したいです。

Javaソースコードのif文において、肯定的な条件分岐を優先する書き方があります。
肯定的な条件が成り立つ場合、セミコロン(;)だけを記述する書き方です。

if (肯定的な条件) {
    ; //処理を続けます
}
else{
    //その他の場合の処理をします
}

if文の条件分岐を「~である」と肯定文で書くために、「; セミコロン」を使っています。

プログラム処理がわかりやすい、if文において肯定文で条件を書く事

Javaソースコードのif文の条件指定において、
肯定文で条件を書く方がプログラム処理がわかりやすい、と思います。

その場合、肯定的な条件を優先する書き方があります。

「if文で、肯定的な条件分岐を優先する書き方」の例

以下にif文において、「肯定的な条件分岐を優先する書き方」について、例を示します。
プログラムの詳細を理解する必要は、ありません。

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
        
    ActionErrors errors = new ActionErrors();
        
    if (super.action.equals("copy")){
        ;
    }
    else{
        super.servlet.log("無効なアクション=" + action);
        return errors;
    }

    ....

}

if文で、肯定文で条件を書いています。
「action変数が、文字列"copy"と同じであるなら」と、書いています。

その「肯定的な条件」が成り立つ場合、
「; セミコロンだけ」、つまり何もせず処理を続ける、と書いています。

if文の条件で「同じである」という肯定的な書き方を、優先しています。

そしてif文の条件を肯定文にしたかったから、「; セミコロン」を使っています。

「~である」と判断
「~である」と判断・イメージ画像

if文で、否定的な条件分岐の書き方

ちなみに次のように、if文の条件分岐を「否定文」を使って、書くこともできます。

if (super.action.equals("copy") == false){
    super.servlet.log("無効なアクション=" + action);
    return errors;
}

この場合は、
「action変数が、文字列"copy"と同じでないなら」という書き方になります。

条件が否定文の場合は、
if ( ... == false) の「== false」を、省略できません。

※ここでは、否定の等価比較演算子「!」の使用を考えていません。
falseの否定は(否定の否定は)わかりにくい、と考えています。

if文の条件が2個以上ある時も、肯定文で書いてみましょう

if文の条件が2個以上ある時でも、

「~である、かつ、~である」という肯定文で条件分岐を理解したいなら、肯定的な条件を書いてみましょう。

if文の条件が2個以上ある時の例。

//aか1である、かつ、bが2である、かつ、cが3であるなら
if (a == 1 && b == 2 && c == 3){
    //処理を続けます
    ;
}
//そうでないなら
else{
    //処理を中止します
    return;
}

if文の条件で、== trueを省略できます

ちょっとしたことですが、if文の条件を肯定的な条件にすると、if文の条件で、== trueを省略できます。

if文の条件で、== trueを省略する例。

if (action.equals("copy") == true) を、
if (action.equals("copy")) と、書けます。

※ここまでの記事は、2004年7月当時の記事になります。

可読性や保守性が高まる、if文で肯定的な条件を書くこと

次の事を意識したい場合、優先的に「肯定文で条件分岐」を書くようにしてみましょう。

プログラム処理の文脈を、肯定文で理解したい。
「~であるなら、~する」と理解したい。

一般的に言うと、

if文で肯定的な条件を指定する方が、ソースコードの可読性や保守性が高まります。

If文の条件式では、論理演算子や比較演算子を複雑に組み合わせて、条件指定することもできます。

ですが条件式を簡単に表せるなら、そうする方が良いです。
if文のソースコードの可読性が高まるからです。

否定の等価比較演算子「!」を、使わないようにしましょう

例えば、以下のようなコードでは、
!を使って否定的な条件指定をしています。

if (! isValid) {
  // エラー処理
}

このコードは、isValidが偽の場合にエラー処理をする、という意味になります。

ですが、!を使うことで、読み手が「否定的な条件」を理解するために、余計な負担をかけています。

一般的に、肯定的な条件を理解する方が、読み手の負担は軽いです。

肯定的な条件を優先する書き方は、以下のようになります。

if (isValid) {
  ;
}
else {
  // エラー処理
}

多くの場合で、肯定的な条件指定を書くとは、否定演算子である!を使わずに条件式を書くことです。

!を使って条件式を書く際、本当に!を使う必要があるか、検討してください。

検討した上で、!を使って条件式を書く必要があると判断した場合は、それで良いと思います。

【まとめ記事】へのリンク

【まとめ記事】Javaアプリの品質を保つため、Javaソースコードを書くための工夫

Javaソースコードを正しく書くための、ちょっとした工夫について、ご紹介しています。 変数の寿命を限定する書き方。 肯定的な条件を優先して条件分岐する書き方。 クラス…