今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

内部クラスと匿名クラス

改造を依頼されたプログラムのコードを眺めつつ思う。匿名クラスばかりを使ってて、明示的に名前をつけた内部クラスを作ってない。これって、可読性が悪いんだけどなー、と。
匿名クラスにするってことは、メソッドの中に新たにクラスを記述することになる。そうすると、どうしてもそのメソッドが長くなってしまう。結果的に、ひとつのメソッドを一目で見渡すことが困難になってくる。また、多くを記述しようとするとどうしてもインデントが深くなりがちになる。
もし、匿名クラスを使うとするのなら、ある程度の条件を満たすものに限るべきじゃないかと。

  1. 単一のメソッドだけを持つ。
  2. メソッドの内容は数行以内。
  3. そこ以外で似た処理を持つ匿名クラスが存在しない。
こんな感じ?
メソッドの中身のうち、9割が匿名クラスを記述してて、匿名クラスにするためだけにメソッド内のローカル変数を final 宣言してて、しかも匿名クラスの記述が100行以上あるって、それはダメでしょ。自分的にはあり得ない。
というわけで、巨大メソッドのリファクタリング中。残念ながらテストコードがないから、元のコードから挙動を変えてしまうことがないように注意深く。