[seasar-s2dao-dev:648] Re: DAO-143 フィールドの並びが定義順とは限らない件
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
2008年 10月 7日 (火) 11:23:57 JST
横田です。
Koichi Kobayashi さんは書きました:
> アノテーション案だと例えば
>
> [seasar-s2dao-dev:638]
>> - INDEXは@ProcedureParameterの属性でデフォルト-1にしておいて、
>> -1の場合は現行と同様(取得できた順)にするとか
>
> となってますが,デフォルトで大丈夫なのは
> どんな環境で,明示的に指定しないといけないのは
> どんな環境なのか告知すべきですよね.
アノテーション案では、デフォルトで使わないことを強く推奨しているのだと
思っています。
●アノテーション案:
・順番を明示的にアノテーションで指定してね
・指定しない場合の挙動は保証しませんよ
・互換性のことを考えて、指定しなくてもエラーにはしませんよ
これに対してJavassist案では、明示的に指定する方法を提供しないわけです
よね。それだと、安全なコードを書きたい人が安全なコードを書けないことに
なります。また、あるJavaコンパイラやVMの実装ではうまく動かない、となっ
た場合にアプリケーションコード側だけでの対処ができません。
というわけで、
> 明示できるようにしておくから,問題が起きた人は
> アノテーションで指定してね,という程度なら
ということではなく、「困りたくなければ明示してね」というものにすべきで、
そう考えるとJavassist案は安全ではないという意見です。
ただ、おっしゃるように、
> ちなみに,Javassist 案とアノテーション案は
> 排他的ではありません.
>
> アノテーション案を採用するにしても,Javassist 案を
> 併用することでランタイム環境の影響が排除され,
> デフォルト (並び順を明示しない) で大丈夫な環境を
> 拡大することができます.
既存コードが正しく動く可能性を高めるという意味ではJavassist案「も」
実施するという選択肢はありだと思います。
あとは実装のコスト、実装の複雑度の増大、実行速度への影響などを考えて
実施を検討すれば良いと思います。
というわけで、結論は「Javassist案だけ」という対策はNGではないか、とい
うことです。
--
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
seasar-s2dao-dev メーリングリストの案内