[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] Re: ポインタと参照




In article <199901270306.MAA01598@xxxxxxxxxx>
ENDO Yasuyuki wrote:
>>確かに、
>>>  public void swap(Object a, Object b) {
>>というインターフェイスのほうが将来の拡張は楽かもしれませんが...
>
>拡張性があった方が保守が楽なのではないかと思いますが、
>それは「量的な問題」もあるかもしれませんね。
>
>(何千行もの意味不明なソースコードがあって、
>引数見ただけじゃ何をするメソッドなのかわからないとか...)

ソースの改変に融通を利かせやすいというメリットがあるとは思いますが、
interfaceをパラメタに取っておけば「それを実装していさえすれば渡せる」
ということで、保守性を保ちつつ拡張性が増すわけです.

ここで言う保守性とは、上記のソースの改変云々とは違い、バグの発生を未
然に防ぐことによる生産性向上ですね.
Objectをパラメタにとってinstanceof等で動的に型チェックを行うというこ
とは、そこに問題があった場合に問題に気づくのが、「実行させて*実際に*
不正な型を渡したとき」になってしまい、それまで問題があることが判明し
ません.
実行時の型チェックで例外すら投げない設計だったりすると、さらに大変で、
不正な型を渡していてもそのメソッドは正常に戻ってきてしまうため、「な
んか挙動がおかしいけどどこが悪さしてるんだろう」となって、いつまでた
っても問題の場所(「問題領域」ではない(?笑))が見つからないという事体に
なります.

これは生産性を最も阻害する要因だと思います.
こういうバグがコンパイル時に場所まで示されるというのはすごく重要なこ
とで、JAVAをStronglyTypedな仕様にした大きな理由はこのためであると認
識しています.
なんでも渡せるメソッドが本当に使いやすいか?ということですね.

遠藤さんにとっては「それは分かっている」ということまで書いてますが、他
の方のためにもということでだらだら書きました.

=====================================
Shin@イデア
=====================================