フレームワークにとって「異常系」も「正常系」
なんか言葉遊びみたいなタイトルになってしまいましたが。
前回のエントリで高級フレームワークについて述べましたが、高級か低級かにかかわらずフレームワークたるもの、「異常」を「異常」で終わらせてはいけません。それでは開発効率が落ちます。
人間なんだもの、誰だって間違います。この間違いを拾い上げ、ちゃんとレポートするのもフレームワークの仕事のひとつではないでしょうか。私はこの件に関しては、Google Guice がたいへん良いお手本だと思います。Guice はとても小さな DI Container です。そのシンプルさを好んで愛用している方も少なくないでしょう。しかし、そのシンプルな Guice ですら使い方を誤ることはあります。そのときの Guice の例外メッセージが大変親切で、何を正せばいいのかがすぐにわかります。
フレームワークを選定する際は、ぜひ「間違ったらどうなるか」も検証したいものです。
私が考えるフレームワークの異常系の振る舞いのランク
Java 的発想で
S級(立派といわざるをえない)
どう直せばいいのかを簡単なサンプルとともに明示してくれる。メッセージがi18nなら言うことなし。
A級(満足いく機能といえる)
何がたりないのか、何が矛盾なのかを明示してくれる。
B級(及第点)
原因ごとにおおむね違う例外や例外メッセージを出す。
D級(怒りを覚えることも)
NullPointerException や NumberFormatException などのプリミティブな例外をそのまま投げる。
E級(殺意を覚えることも。場合によっては使うに値しない)
例外を黙殺し、さも問題がなかったかのように動く。
Guiceは、一部S級。web.xmlの書き方が例外メッセージに入っていたのは感心した。
S2Containerは、C級。ハマったときに抜け出しづらい。
内作トンデモフレームワークにはD級やE級もすくなくないですね。
かなーり前のエントリだけど「NullPointerExceptionを出したら負けかなと思っている - イトウ アスカ blog」もよろしく。