>>396
>>364のコードに限定すれば(2)でも実害はない。
でも普通のプログラマならたとえ実害がないことは認めても必要もないのに
(2)のように書きたいとは思わない。

理由は、変数のスコープは短いほど安全でミスを犯しにくく、ミスがあっても
発見しやすいから。
プログラマは変数が宣言されてからスコープを抜けて死ぬまで、
その変数に対してなされる操作に注意を払う必要がある。

注意を払う変数が1つならミスも起こりにくいかもしれないが、
スコープが長くなれば必然的に同時に意識する必要のある変数の数も増える。
人間は一般に多数のものに同時に注意を払うことは難しい。

こういうのはプログムを書いてるときのマインドのままだと理解できないかもしれない。
頭を他人のプログラムを読んでるときのマインドに切り替えて考える必要がある。