混ざると管理しにくいすごいコード

nowokay2008-06-13

すごいコードとそうではないコードが混じると管理しにくいということですが、実際そうですよね。
すごくセンスのある人がいて、ビックリするようなテクニックを使って追いにくいコードを書く人がいます。
すごいな〜とは思うけど、できればやめて欲しいですね。


よくあるのが、みんな使ってないけどその人だけが使ってるライブラリ。それもプログラムの作り方に影響しそうな。
例えば、その人のコードだけBeanUtilを使って、そのためにBeanがちゃんと書いてあったり、それぽいところはないのに1行でデータコピーしてたり。BeanUtilだと何かの依存ライブラリとして使える状態になってたりするし。
でも、これは局所的です。それに、わかってしまえば追うのはたいしたことない。使えるものは使うというのも、まあ悪くないと思います。


たちが悪いのは、オブジェクト指向だったり30行メソッドとかメンテナンスしやすさテストしやすさの名の下に、無意味に細切れにされて散らばったコード。
特に、継承を駆使すると、迷宮のようなコードを作りあげることができます。継承と、あとは型をスーパークラスで持つという、型ロンダリングとでもいえるテクニックを併用すると、なかなか追いにくいコードを書くことができます。


もうひとつが、データの持ち方によるもの。クラス作ればいいものを、配列で値を束ねたり、そこでなぜかListを使ったり、しかもそのListの中にListやMapが入ってたり、もちろんGenericsなんかは使ってなかったり。
こういう、データ構造の不適切というのは、読みにくさをコード全体に散りばめることができるので、かなり効果的です。そのためのメソッドとかサポートクラスとかできて、何がなんだか感をうまいこと醸し出すことができます。


すごいコードとすごくないコードで、同じような行数で同じことができるならすごくないコードの方がえらいですね。