残念なコード

以前見かけたコード。
これと同じレベルのコードが実際に業務で使用されていて、こんなコードを使用しているシステムが日々お金を稼いでいるのが現実。

if( $_POST["ID"] != ""){
    if( ctype_alnum($_POST["ID"])){
        if($_POST"PW"] != ""){
            if( ctype_alnum($_POST["PW"])){
                $page = "confirm";
            }else{
                $err = "PW は英数字のみ";
            }
            $err = "PW の未入力";
        }
        $err = "ID は英数字のみ";
    }
    $err = "ID の未入力";
}

大体こんな感じ。突っ込みどころがたくさんある。
まず、このifの入れ子、どうにかならないものだろうか?
条件を全部逆転させてしまおう。!=は==に、関数の戻りを ctype_alnum は !ctype_alnumに。

if( $_POST["ID"] == ""){
    $err = "ID の未入力";
}else{
    if( !ctype_alnum($_POST["ID"])){
        $err = "ID は英数字のみ";
    }else{
        if($_POST"PW"] == ""){
            $err = "PW の未入力";
        }else{
            if( !ctype_alnum($_POST["PW"])){
                $err = "PW は英数字のみ";
            }else{
                $page = "confirm";
            }
        }
    }
}

で、elseの中がひとつのif〜elseになっているので、elseifにまとめる。

if( $_POST["ID"] == ""){
    $err = "ID の未入力";
}elseif( !ctype_alnum($_POST["ID"])){
    $err = "ID は英数字のみ";
}elseif($_POST"PW"] == ""){
    $err = "PW の未入力";
}elseif( ctype_alnum($_POST["PW"])){
    $err = "PW は英数字のみ";
}else{
    $page = "confirm";
}

このぐらいの工夫は欲しいものである。