軽快なJava―Better,Faster,Lighter Javaposted with amazlet at 05.01.03ブルース・A. テイト ジャスティン ゲットランド Bruce A. Tate Justin Gehtland 岩谷 宏
オライリージャパン (2004/09)
売り上げランキング: 5,443
通常24時間以内に発送おすすめ度の平均:Javaプログラマ必読
率直な筆者の経験は必読
シンプル
軽快なJavaに感化される。特にためになったのが、透明性を確保するための方法について。つまりアプリケーションの各ドメインがそれぞれ独立して他に依存しないようにする方法。ぱっと考えてそんなことできるのかと思いましたが、現在主流になってる方法は
・リフレクション (きたオブジェクトに動的に対応) ・コードインジェクション (Build時にAntで自動的にコードを付け加える) ・コードジェネレーション (コード自体を生成する)
の3つらしい。そしてそこに重要な役割を果たすコンフィグレーション。アプリケーションの独立性/再利用性を考えるときにAPIをこねくり回してコードで解決するより設定ファイルにしてしまえと。
PHPUnitを使って実感したこと、テスト容易性は設計の独立/透明性を表す。を最も重視して真っ先に取り組むことなんじゃないかという気がしてきた。コンパイルが無い分PHPでのUnitTestの重要性は高いんじゃなかろうか。テスティングの簡単な方法や有効な使い方は?早く調べないといけない気がする。コレとかいいのかも!
Mojaviなどのコンポーネント的フレームワークの嫌な点が見えてきた。純粋に「ActionとかViewクラスってどうやってテストすんの?」ていう疑問に答えられない。StrutsだとStrutsTestCase for JUnitなんていうのがあるみたいだけどようするにフレームワーク自体を模倣する何かが必要なわけで、それじゃあMojavi for PHPUnitを作れってことか?それは容易とは言えない気がするし、透明な設計とは言えない。
■自分覚書き
・設定ファイルはどんどん使ってよい。(Mapleはとっくにこれに気づいている) ・POPO?(Plain Old PHP Object)を扱うテストが容易なフレームワーク。 ・継承を避ける。(継承は階層構造にクラスを縛る) ・コードジェネレーションを恐れず使う。