ローカル変数

常にソースコードをコピペで作る人が、ゴミなローカル変数を毎回残しているので、なんとかこれを見つけて排除したいのです。

ローカル変数について思うところを書きます。

メソッドの先頭でまとめて宣言してもほとんど意味がないっす

メソッドの先頭に変数宣言が書いてあって何かいいことあります?せいぜい「こんな変数を使ってますよ」っていうのが分かるかもしれないってことぐらい?他の変数を宣言していないと保障できるわけでもないし。リファクタしにくいだけですから。

使用しているスコープの外で宣言しない方がいいっす

使っているスコープで宣言すりゃいいじゃないですか。なんでfor文の中でしか使わない変数をfor文の外で宣言するのよ。これもリファクタしにくいだけですから。

一度しか代入しないものにはfinalをつける。つけまくるべし。

final好きを自称する僕ですが、あくまでローカル変数についてですよ。これによってケアレスミスが防がれることがたまーにあります。自分の意図をはっきりさせるためですね。


finalという文字は邪魔にしか見えないとか、どうしても一行は80文字までに収めたいのでたった6文字でも書くのは嫌、という方以外にお勧めします。


あとfinalを使うのは、コンストラクタに渡された引数がオブジェクトのライフサイクル中で不変の場合。無名クラスにfinalで変数を渡すのは躊躇します。

そもそもメソッドをそんなに長く書かない

ローカル変数を10個以上宣言するようなメソッドって僕は多分書かない。あるとしたら相当長い*1メソッドになっているはずなんで、リファクタするべし。ただ、何か同じようなコードが続く場合や、テストケースは別。テストケースは具体的にだらだらだらだらと書きます。


過去こんなことを言った経験が何回かありますが、やっぱ合理性という根拠だけでは、人はプログラミングスタイルを中々変えられないということを知りました。だから押し付けちゃダメなのね。

*1:僕は20〜40行を超えると長いと感じる