[Wicket-ja-user 572] Re: コンポーネントの変数の宣言位置について

アーカイブの一覧に戻る

Tsutomu Yano t_yano****@me*****
2011年 9月 8日 (木) 18:23:55 JST


矢野です。

たぶん、フィールドに出す必要がない(コンストラクタ内でだけコンポーネントにアクセスできれば良い)から、フィールドになってないだけだと思いますよ。変数のスコープを小さくするためには、必要ないならコンストラクタ内に閉じてた方がいいので。

実際にプログラムを作っていると、コンストラクタ以外の別のメソッドから、コンポーネントにアクセスする必要が出てくることは普通にあります(ページのonBeforeRenderとかonConfigureをオーバーライドしてる場合とか)。そういう時は、私はコンポーネントをフィールドに代入します。

> 一つ目のように書いてあるのは、以下の二つの理由だと思っているのですが、その理解
> でよろしいでしょうか。
> 1.ソースが短くなる
> 2.変数のスコープが狭くなる。

そのとおりだと思いますよ。

---------------------------------------------------
矢野 勉(やの つとむ)
電子メール: t_yano****@me*****
---------------------------------------------------

On 2011/09/07, at 6:22, Masaya seko wrote:

> お世話になっております。世古です。
> 
> 些細なことなのですが、コンポーネントの変数の宣言位置について疑問がありましてメ
> ールを書いております。
> 
> Wicketのコードのサンプルを見ておりますと、大抵コンストラクタ内でコンポーネント
> の変数が宣言されています。
> 例えば、以下のような書き方です。
> public class HomePage extends WebPage {
>    public HomePage(final PageParameters parameters) {
>        //コンストラクタ内で変数宣言
>        Label label = new Label("message", "hoge");
>        add(label);
>    }
> }
> 
> インスタンス変数として宣言してはいけない理由でもあるのでしょうか。
> 例えば、以下のような書き方です。
> public class HomePage extends WebPage {
>    //インタンス変数として変数宣言
>    private Label label = null;
>    public HomePage(final PageParameters parameters) {
>        label = new Label("message", "hoge");
>        add(label);
>    }
> }
> 
> 一つ目のように書いてあるのは、以下の二つの理由だと思っているのですが、その理解
> でよろしいでしょうか。
> 1.ソースが短くなる
> 2.変数のスコープが狭くなる。
> 
> インスタンス変数として書いて駄目な理由はないと思っているのですが、インスタンス
> 変数として書いているコードをあまりにも見かけないため、不安になってしまいまして
>> 
> ご教授いただければ幸いです。
> 
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user




Wicket-ja-user メーリングリストの案内
アーカイブの一覧に戻る