Monday 18 August 2008

あぁ、そうじゃないんだよ...

とか言いながら学生の書いたプログラムを直してました。でも、たこなプログラムの遠因は自分だったりするんだよな。

良く使う定数をInterfaceに書くってのは、Java では、あり。確かにそう書いたのは僕だけどさ。なんだが、それをそこら中で使うのは、変だろ? おかげで、わけわからない implements が、すべてのクラスに付いている。で、Interfaceからクラスに変更して、定数を作っているところをstaticなメソッドに直して、そこに集める。と、同じようなメソッドがたくさんあるので、それは一つに出来る... すると、定数参照は一ヶ所に集まって同じようなコードが分散しているのも減るというわけだが...

Javaのinterfaceの使い方がおかしいらしく、implements を取っても動く。一方で、余計な implements を満たすために、自動生成の空のメソッドが放置されている。最初は、interfaceで書こうとしたらしいんだが、結局 cast しちゃったので、要らなくなったらしい。そのcastを取るためには interface が必要になるんだろうけど... どこでcastしているかというのを探すのは難しい。

クラス名、変数名が変。

tempほげという変数名は「ささっと片付けたい」という希望的観測で付けるんだろうけど、ローカル変数は、もともと一時変数なんだから、意味ないです。

class IOHandler は、まだ我慢できるんだが、class IOParamってなんだ? Selector から IOHandler が呼ばれて、データをreadしてから、そのreadしたパラメータを処理するclassという意味なんだろうなぁ。でも、それってサーバの処理の中心だよ。実際、データベース処理のほとんどは、そのIOParamに書いてある。そんな重要なクラスなんだから、もっと、ちゃんとした名前を付けてあげて下さい。

ad-hoc なコピペコードとプロトコルをなんとかしたいだけなんだが、なかなか、そに行き着けない...

普通は、このあたりは研究室内のコードレビューで取れるはずなんだが、土壇場まで動かなかったプログラムなので、レビューが足りなかったらしいです。Eclipse のRefactoringが、逆に罠で、結構、直しちゃうんだよな。

No comments: