変数のスコープの局所化
一般的にどうなのだろうか、という話もあると思うが‥
自分は、括弧やインデントが多少増えても、変数のスコープを局所化することの方が重要だと考えている。
例えば、こんなコード。(たまたまJSPなだけ。)
<% String result = ""; String attr1 = (String) session.getAttribute("attr1"); if (attr1 != null && !attr1.equals("")) { result = "?attr1=" + attr1; } %> <%-- ‥この後に100行くらい続く。--%>
このとき、変数 attr1 はどこまで使われるのか?パッと見ただけでは分からない。「この後に100行くらい続く」の後でも使われるかもしれないし、使われないかもしれない。それは「この後に100行くらい続く」コードや要素の中身を見ないと分からない。
ここでしか使われないのなら、次のように書くと、変数 attr1 の立場が明確になる。
<% String result = ""; { String attr1 = (String) session.getAttribute("attr1"); if (attr1 != null && !attr1.equals("")) { result = "?attr1=" + attr1; } } %> <%-- ‥この後に100行くらい続く。--%>
で、括弧が、インデントが多くていや、という状態になるのなら、それはメソッドを分割するなり、(JSPなら)カスタムタグをちゃんと書くなり、ユーティリティメソッドとかを作ってそれを呼び出すだけにするなり、手はあるはず。
どうでしょう。