Type3とfinal

僕はjavaのfinal宣言が異常に好きです。どれくらい好きかというと、数行のメソッドのローカル変数でも一度しか代入されないものはすべてfinalにしてしまうぐらい。個人的なスタイルとしては「変数はできるだけfinalで宣言したほうがいい」ではなく「すべての変数は基本的にfinalじゃなきゃダメ」って感じです*1


そんな僕が何かクラスを作ると、属性はできるだけfinalになるように考えてしまいます。


Type2コンテナのSpringを使っていて、定義するBeanにはデフォルトコンストラクタを使わなければならないので、そのBeanのフィールドにはfinalがあまり使えません。しかしType3を知って、これならfinalガンガン使えるじゃんと気づき、Type3もええなーと思うに至りました。


でもなぜかType2の方が便利そうな気がします。Beanによってはプロパティが4つ5つというものもあるからです。JDBCの接続設定とか。4つ5つを多いとみなすかどうか。微妙です。

でも定義ファイル上では、きっとType2でもType3でも同じような感じになるはずだから、僕の中ではfinalを使えるType3の勝ち、ということが今日判明しました。


でも両方使えるのがベストかも。
id:higayasuo:20040312でひがさんが仰っているのはそういうこと?それとも全く別の方法なのでしょうか?

*1:実際はすべてfinalというのは無理なので、気持ち的に