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

[jfriends:00666] Re: Java の初期化



田中です。


> パラメータに関係なく初期化されるものに対しての
> 初期化はどこで行うんでしょう?
> class Test {
>    Integer i;// = new Integer(0);//ここで初期化?//'1'
>    Test(){
>        //i=new Integer(0);//それともこちら?//'2'
>    }
> }
> これなら・・私は別に'1'でも'2'でも
> あまり不自然には感じませんが'1'の場所で他のメソッドを
> 呼び出し、その戻り値で初期化を行うのは非常に不快感
> を感じるのですが、皆さんはどうですか?

単純な変数の初期化については確かに正解といえるものはないのではないかと思いま
す。
たとえば関数の部品化・再利用の観点から考えた場合、関数の中で初期化した場合に
再利用性が下がってしまうケース(将来的に呼出元での値指定が可能である必要が発
生する場合が予測されるケース)や、逆に関数内で初期化しないと処理の安定性が損
なわれるケースなどがあり、一概にどこで初期化すれば正しいとは言い切れない面が
あるかと思います。

私の場合は完全な内部変数は関数の冒頭で初期化し、多少でも外部とのやり取りが発
生する可能性のある変数にはコンストラクタなどで初期化するという作り方をしてお
ります。

> このような単純なソースの場合は結果が正しいので
> 間違っていることの証明が難しいのです。
> 意味上の説明(初期化はコンストラクタで行うなど)
> では、「正しく動いているんだからいいんじゃないの?」
> となってしまいます。
> クラスが初期化されていないのだからメソッドが
> 正しく動かないはずなのに、正常動作してします。
> 複雑な場合はちょっとちがいますが・・
> どのように説明すればいいのでしょうか?
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! BB is Broadband by Yahoo!
> http://bb.yahoo.co.jp/
>
>
> ------------------------------------------------------------------------
>       ★あなたのホームページに“最新ニュース”をお届け!!      
>          http://ap.infoseek.co.jp/ticker2.html   
>



------------------------------------------------------------------------
      ★あなたのホームページに“最新ニュース”をお届け!!      
         http://ap.infoseek.co.jp/ticker2.html