[Seasar-user:2025] Re: S2Dao へのフィードバック

加藤太朗 kato
2005年 5月 26日 (木) 00:33:53 JST


伊藤さん、こんばんわ。

> 理由は DAO が S2Dao に依存してしまうから。
例外クラスがってことですよね?

でも一般的にはアップデート件数0で例外ってなかなかレアだと思うので
許容範囲な気がしないでもないです。

依存性が気になる場合は、RuntimeExceptionでも何でも良いと思いますが
(リフレクションにとっては十分なマークアップになるだろうし)
それだと例外クラスの意味が無いし私の感動したポイントも薄れちゃう(後述し
ます)。


依存性はともかく私はこのアイデアに、ゾクゾクッってきました。

インターフェースの定義者が、まだ見ぬ実装者(S2Daoインターセプタですが)の
挙動をコントロールしちゃうんですよ。

アノテーションと違って、IDE・コンパイラの領域ですから記述ミスも無いし。

本来例外を決定するのはそのメソッドの実装側の理由によるケースも多いですが、
これは逆にメソッド利用者がどうして欲しいか指示しているんですから、
その逆転現象が気持ちいいじゃないですか。
例外欲しければ throws に付け足しておけば挙げてくれるなんて良いですよこれ。

もしかしたら今回以外にも他にも欲しい例外が出てくるかもしれません。
その時は throwable に追加すれば DAOがケースに応じて起こしてくれるって
ものすごくないですか?

    Entity getOne(条件) throws ManyRecordsException, NothingException

とか、もし例外が細かく判断できれば

    void insert(bean) throws DuplicatePrimaryException,
                             DuplicateUniqueIndexException,
                             ForeignRecordNotFoundException

など発展性が感じられます。(これはかなり実装が辛げですが↑)


もうDao用例外セットjarだけ独立して持ち運んでも良いですよ。他のDAOも
みんな使ってくれって感じで。(…ちょっと無理があるなぁ)


メソッドシグネチャが全てを語るのがインターフェースとしてのゴールだと思
ってますので、これは来たなぁ〜と思いました。
アノテーションやコンフィグは視線が遠いですからね。


--------------------------------------------------------->>
Gluegent,Inc. T.Kato
http://package.gluegent.com/~kato/signature.xml
---->> generate products and services with high added value


> こんにちは。
> 伊藤です。
> 
> 加藤太朗さん:
> > 小林さん、こんにちわ。
> > 
> > > それなら throws NotModifiedException が宣言されてたら
> > > スローするとかってのもよいかも.
> > あ!それだ! それ絶対、採用♪ FIXってことで。
> 
> 個人的にはあまり好きじゃないです。
> 理由は DAO が S2Dao に依存してしまうから。
> アノテーションまでならなんとか許せるけど。
> 
> ----
> 伊藤 喜一
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> http://lists.sourceforge.jp/mailman/listinfo/seasar-user





Seasar-user メーリングリストの案内