Step2:可読性を高めるためのメソッドの抽出
ファイル取得の部分をメソッドに切り出してみたー。getFilesというメソッドを作成しました(リスト3①)。
確かに何をやっているのかわかりやすく読みやすくなったっすね。ついでに、sizeOfFilesメソッドはフィールド変数にアクセスしていなかったので、staticメソッドにしちゃいました[10]。あと、特にこの画面独特のメソッドでもないから、ユーティリティクラスに移動させちゃったよ(リスト4)。これでどこからでもsizeOfFilesメソッドが利用できるっす。
かなりすっきりしてきたのう。ほかに気になるところはあるかのう?
ディレクトリの数が3つ固定という前提で作られているのが最初から気になっていたっす。4つに増えたらどうなるっすか?
たとえば、「fish」というディレクトリが増えたら、「fishFiles」と「fishSize」という2つのフィールドが追加されて、JSP側もほかのディレクトリと同じようなコードが追加されると思います。
ここはいよいよ抽象化するしかないんじゃない??達人プログラマ、決断をお願いします!!
ふぉっふぉっふぉっ、そうじゃのう。抽象化して処理したほうがいいかのう。ディレクトリが増えることがあり得ないのであれば、このままでもよいのじゃが、ここでは「増える可能性も50%ぐらいある」という前提で話を進めるぞい。
じゃあ、俺が抽象化してまとめるっすよ!!
まあ、待て待て。じっくりとコードを見て、フォースを感じるのじゃ。抽象化の前にやれることがあるはずじゃぞ。
私が気になるのは「foodFiles/foolSize」「animal Files/animalSize」のように2つセットでフィールドが増えていく点です。うまく言えませんが、なんだかモヤモヤする感じです。
グッドポイント。抽象化の前にデータ構造の整理をしておくぞ。「ペアで管理すべき変数」が出てきたら、不吉な匂いじゃ。ほとんどの場合、それらの変数は「1つのオブジェクト」にまとめることができるはずじゃ。
そうなんですね! ちょっとやってみます!!