[seasar-s2dao-dev:646] Re: DAO-143 フィールドの並びが定義順とは限らない件

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 10月 6日 (月) 19:00:05 JST


小林 (koichik) です.

S2Dao のコミッタではないので投票はしませんが.

Date:    Mon, 06 Oct 2008 17:43:04 +0900
From:    YOKOTA Takehiko <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [seasar-s2dao-dev:645] Re: DAO-143 フィールドの並びが定義順とは限らない件

> どうしてもというのであれば、主要なコンパイラのさまざまなバージョンで検証し、
> UTを書いたりしておくことで挙動が変わった時すぐにそれが発覚するようにして
> おき、さらにユーザには検証済みの動作環境を知らせた上で、それ以外のコンパ
> イラでは正しく動作しない可能性がある旨を告知すべきだとおもいます。

これについてはアノテーション案でも等しく必要
(もしくは Javassist 案でも等しく不要) です.

アノテーション案だと例えば

[seasar-s2dao-dev:638]
> - INDEXは@ProcedureParameterの属性でデフォルト-1にしておいて、
>   -1の場合は現行と同様(取得できた順)にするとか

となってますが,デフォルトで大丈夫なのは
どんな環境で,明示的に指定しないといけないのは
どんな環境なのか告知すべきですよね.

明示できるようにしておくから,問題が起きた人は
アノテーションで指定してね,という程度なら

> 「現象が出てから対処」だと、少数とはいえ一部のユーザがそういうハマリを
> 経験するということになると思います。それは不幸なことだと思います。

という状況に変わりはありません.

互換性を捨てて並び順の明示的な指定を必須に
するのでない限り,上記対応の必要性に違いは
ないということです.



ちなみに,Javassist 案とアノテーション案は
排他的ではありません.

アノテーション案を採用するにしても,Javassist 案を
併用することでランタイム環境の影響が排除され,
デフォルト (並び順を明示しない) で大丈夫な環境を
拡大することができます.

並び順の指定で間違える可能性や,既存のコードへの影響を
考慮すると,ランタイム環境の影響だけでもデフォルトで
排除することは,利用者にとって大きなメリットのはずです.

よって論点は,Javassist 案を採用するかどうかではなく,
現時点で存在するかどうか不明なコンパイラの影響に
備えるべきか? ではないでしょうか.



-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



seasar-s2dao-dev メーリングリストの案内