初回なので、ガツンと掴みを入れたい。
バグを産まないための最も簡単な方法は、
  • プログラムを書かない
  • それが無理なら、バグを産まないくらい簡単な作りにする
というのが基本です。
もちろんプログラムを書かないとというのは、選択肢にはないわけですから、後者になります。

コレは、PHPに限らず、どんな言語にも言えることですが、
インデントが深くなれば深くなるほど、バグを生む可能性が高くなる。
それと、もう一点、
コードの行数が増えれば増えるほど、バグを生む可能性が高くなる。 ということです。
私が考えるエレガントなコードとは、無駄がないコード。
つまり、インデントが浅く、プログラムコードが短いコードです。

思想を押し付ける気はありませんが、このブログでは、そう仮定して、話を進めます。

そうでなくても、可読性が上がるなど、いいことづくめですので、出来るなら、そうしたほうが良いです。
設計、リファクタリング、その他諸々技術的な要素がありますが、俯瞰(ふかん)してみたときに、最も気が付きにくく、そして、心構えとして、最も効果的な方法は、 「意味のないelseを避ける」
コレに尽きると思います。

意味のないelseの例を示します。
1
2
3
4
5
6
7
8
9
10
11  
function sample($val) {
    if ($val) {
        $res = "bbbb";
        return $res;
    } else {
        $res = "aaa";
        echo "it's false";
        return $res;
    }
}
これは、こう書き換えても動作します
1
2
3
4
5
6
7
8
9  
function sample($val) {
    $res = "bbbb";
    if (!$val) {
        $res = "aaa";	
        echo "it's false";
    }
    return $res; 
}
インデントが一階層減って、コードの行数が2行減りました。

単純なコードですが、10行程度のコードでも、違いが分かるかと思います。

実コードでよくある例としては、エラー処理のために、ifで分岐して、通常処理を、elseでに書いてしまう。
といった事がありますが、エラー処理なら、そこでreturnもしくは、例外を投げるべきで、通常処理をelseで囲う必要は全くない。
というようなものです。
ここを修正するだけで、インデントが一気に浅くなったり、コードが短くなります。

しかしながら、リファクタリングや、最終的な調整の段階では、気が付きにくく、また気がついても、大規模な修正になることが多いため、コレに関しては、常に心がけてコードを書く必要があります。