このあたりは、好き嫌いの問題とか、コーディング規約的な縛りという所だと思います。
一昔前(といってもかなり昔ですが)であれば、例えば、
変数が、2回スタックに積まれて解放されるので、速度が・・・などという話もあったかとは思いますが、今のコンパイラは優秀ですし、そもそも現状ギガで動作するCPUからしたら、どうでもよい処理時間ですので、気にすることはないかと思います。
ただ、やはりある程度意味のある分け方をするなど、読み手が、なんで、分けてるのかな?という事がわかるという事は重要です。
なので、例えば上記では、コードを2分割していますが、それがどのような意味があるのか?という事が重要かと思います。そうゆう意味では、単に長いから・・・ではちょっと、説明としては、よろしくなく、それぞれのブロックにおいて、例えば、
{//ほにゃらら処理
for(){
}
}
{//ほにゃらら処理だけと、100だけの場合
for(){
}
}
とか、コメントをつけるとか、することで、優しい記述となるかと思います。
ただし、もし
の意味することが、大きく上下で違うようであれば、ブロック分けをせず、素直に別名の変数を使うべきでもあります。(今回はカウントするという意味っぽいので、よさそうですが。)
また、
の記述は、もしかしたら、元は、
のような、もともとif分かなにかあったのを、コメントアウト後で削除したのでは?という、深読みをされる可能性がありますので、
やはり、内故、をコメントしておく事が、きちんとすることが大切かと。
また、上記のようななんとなく似ている処理であれば、関数化できないかどうか、検討することも必要かと思います。
ちなみに、私は関数内部用の変数において、変数スコープを関数レベルからさらに狭める目的で利用し、できるだけ、イージーミスでの、変数の取り違いなどを行わないように、結構多様する人間です。
そして、そうゆう意味で使うときは、int cntA; int cntBと分けてコーディングしますね、、、両方cntのままだと、コメントアウトなどでの、ちょっとした修正で、スコープからはずれてしまっても、わかりませんので。
それなら、複合文いらないんじゃない?となりますが、今度はエンハンスなどでコード追加時にcntAなどが、他で参照されない、保証のために、複合文で囲っておきます。
いわゆる、忘れやすい自分のための、自己防衛です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/04/23 05:24