[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11549] Re: final の多用( Re: エクストリームプログラ ミングエピソード)



>> 「継承はソースの再利用の手段ではない」という主張に同意する人が、
>> 「finalを多用する」という主張には拒否反応を示すケースが多いことを
>> 私は常々不思議に思ってたんですが、アメリカでも事情は同じってことでしょうか。

私の場合 final を特に意識して使うのは、継承させることを目的とした
クラスでオーバライドして欲しくないメソッドに対してですねー。
template method をオーバライド可にしておくと後々厄介だったりします
から。そう考えると「継承を再利用の手段とする人が final を多用す
る」とも言えたり:p

In article <200410211546.DHD62330.IUBIuLP7TUPVSJBB@xxxxxxxxxxxxx>
Toru TAKAHASHI wrote:
>なるべくfinalを使うのは良い習慣ではないかと思っています。嫌う人が多い
>とは知りませんでした。
>アマゾンの書評ではnoisy, less readable, boring などと言われていますね。
>
>10/27刊行予定となっているのでもうすぐ書店に並ぶと思いますが、
>2章だけ(英語)Webで公開されているのでざっと目を通してみました。
>・最も有名な定数としての利用例
>  public final static double PI = 3.141;
>・他のクラスで定義されたプリミティブ型/String型の変数はコンパイル時に
>  定数として埋め込まれるので、変更漏れが起きる点に注意
>  → 注意のみで解決法には言及なし
>・クラススコープのprivate static finalを多用するな、メソッドスコープに
>  限定せよ(一つのメソッドでしか使用しないならば)
>・ローカル変数の誤った再割当をコンパイル時に検出すべく、finalにする
> (特に長い複雑なメソッドで有効)
>・引数をfinalにすることで、誤った再割当をコンパイル時に検出する
>・finalコレクション(static initializerで要素を格納後、unmodifiableな
>  参照を獲得しフィールドに代入)
>・フィールド変数をfinalにする
>・finalクラスとfinalメソッド
>・条件コンパイルへの応用(final boolean)

さすがにパラメタとローカル変数の final 指定は(やったほうがよい
と思っているにもかかわらず)見にくくなるだけとは思います。それにし
てもほとんどフィールドに対してしか書いてないと言うのが悲しい。

>上記を知っている人には物足りない本となるかもしれません。

たしかに^^;。

-- 
木下 信@ひらつか
http://www.sk-jp.com/
http://sidebar.jp/