C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.92855 の関連記事表示

<< 0 >>
■92855  Re[1]: 自作クラスからのフォームコントロール操作
□投稿者/ Azulean -(2019/11/02(Sat) 23:07:07)
    2019/11/02(Sat) 23:10:53 編集(投稿者)

    No92854 (amanda102 さん) に返信
    > "一般論としてコントロールをpublicメソッドに渡すような設計はあまり推奨できません。"
    >
    > 何が問題になるのでしょうか?

    いろいろと切り口はありそうです。

    ・スレッドの考慮が忘れてしまいがち
    ・複数のクラスにコントロールのインスタンスを渡してしまっていると、コードの流れの把握が難しい、デバッグしづらくなる(誰がいつどこで書き換えたのか…?となる)
    ・誰がそのインスタンス(コントロール)を管理するのか曖昧になる
    ・寿命管理が弱くなる (フォームを閉じた後もそのクラスが生き残っているなど)
    ・クラスの責務が広くなる
    ・クラスの再利用性が下がる (少し設計を頑張れば、コントロールと癒着せずとも作れる→再利用性が上がるかも)
    ・コントロールに限らず、フィールド変数の多いクラスは理解する、修正するのが大変になりやすい
    ・コントロールに限らず、いろいろなクラスと密結合していると仕様変更に弱くなる


    おそらく、下記のスレッドなのかと思いますが、この例であれば、「テキストボックス自体を渡さなくてもクラスは成り立つ」(責務を狭く・小さくできる)ということだと思います。
    https://ja.stackoverflow.com/a/28646


    > --
    > 例@
    > Formに貼り付けているボタンをクリック、
    > 自作クラスのメソッドが呼び出され値をFormにあるテキストボックスに代入
    > --

    私もこの例の場合、テキストボックスをクラスに渡す…を第一候補とせずに考えますね。

    1. クラスは文字列を生成するだけの責務にできないか?
    2. 生成するタイミングが別だとしても、イベントで通知、コールバックで通知などの方式が良いと言うことはないか?
    3. テキストボックスに代入するのはこのクラスに限定され、かつこのテキストボックスと同種のパターンがあるというように、部品化して問題なく、メリットがあるか?
     (例:ファイル名を D&D を受け取るヘルパークラスなど)
記事No.92854 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -