コードを読みやすい方法で構成しようとしています。私はそれを行う1つの方法が次のようであることを読みました:
if(Init1() == TRUE)
{
if(Init2() == TRUE)
{
if(Init3() == TRUE)
{
...
Free3();
}
Free2();
}
Free1();
}
私はこの方法が好きです。なぜなら、それぞれFreeX
が一致するInitX
ループ内に保持されるからです。ただし、ネストが 3 レベルを超えると、すぐに読み取り不能になり、80 列をはるかに超えます。多くの関数は、これが起こらないように複数の関数に分割できますが、あまりにも多くのレベルのネストを避けるためだけに関数を分割するのはばかげているようです。特に、クラス全体の初期化を行う関数を考えてみましょう。その初期化には 10 回以上の関数呼び出しが必要です。これは、10 レベル以上のネストです。
私はこれを考えすぎていると確信していますが、上記に欠けている基本的なものはありますか? 読みやすい方法で深いネスティングを行うことはできますか? または、それぞれFreeX
を独自のInitX
ループ内に保持しながら、何らかの方法で再構築しますか?
ところで、上記のコードは に圧縮できることを認識していますif(Init1() && Init2()...
が、コードは単なる例です。InitX
各呼び出しの間に、このような圧縮を防ぐ他のコードがあります。