フレームワークにとって「異常系」も「正常系」

 なんか言葉遊びみたいなタイトルになってしまいましたが。

 前回のエントリで高級フレームワークについて述べましたが、高級か低級かにかかわらずフレームワークたるもの、「異常」を「異常」で終わらせてはいけません。それでは開発効率が落ちます。

 人間なんだもの、誰だって間違います。この間違いを拾い上げ、ちゃんとレポートするのもフレームワークの仕事のひとつではないでしょうか。私はこの件に関しては、Google Guice がたいへん良いお手本だと思います。Guice はとても小さな DI Container です。そのシンプルさを好んで愛用している方も少なくないでしょう。しかし、そのシンプルな Guice ですら使い方を誤ることはあります。そのときの Guice の例外メッセージが大変親切で、何を正せばいいのかがすぐにわかります。


 フレームワークを選定する際は、ぜひ「間違ったらどうなるか」も検証したいものです。

私が考えるフレームワークの異常系の振る舞いのランク

Java 的発想で

S級(立派といわざるをえない)

 どう直せばいいのかを簡単なサンプルとともに明示してくれる。メッセージがi18nなら言うことなし。

A級(満足いく機能といえる)

 何がたりないのか、何が矛盾なのかを明示してくれる。

B級(及第点)

 原因ごとにおおむね違う例外や例外メッセージを出す。

C級(フレームワーク利用者の努力でカバー)

 種類は少ないがフレームワーク固有の例外を投げる。

D級(怒りを覚えることも)

 NullPointerException や NumberFormatException などのプリミティブな例外をそのまま投げる。

E級(殺意を覚えることも。場合によっては使うに値しない)

 例外を黙殺し、さも問題がなかったかのように動く。



Guiceは、一部S級。web.xmlの書き方が例外メッセージに入っていたのは感心した。

S2Containerは、C級。ハマったときに抜け出しづらい。

内作トンデモフレームワークにはD級やE級もすくなくないですね。

かなーり前のエントリだけど「NullPointerExceptionを出したら負けかなと思っている - イトウ アスカ blog」もよろしく。