- - PR -
フォームと各コンポーネントの分離
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-18 14:08
設計寄りな質問になりますが、
フォームとメニュー等のコントロールは完全に分離したほうが良いのでしょうか? 以前友人から「マイクロソフトはFormになるべく処理を記述するように言ってる」 と言い、Formにコンポーネントを配置(静的に配置)し、処理を実装していくべきだと主張されました。 私は、Formはあくまで各コントロールの受け皿としか考えておらず、 「Viewにあたる部分のみを記述するべきだ」と考えています。 そちらのほう(動的に配置)が、各コントロールとの結合度を弱めることにも繋がると思うのですが。。。 そこで質問したいことなのですが、 FormとMainMenuなどのコントロールは完全に分離すべきなのでしょうか? おそらくケースバイケースだとは思うのですが、理由などありましたら、 よろしくお願いします。 | ||||||||
|
投稿日時: 2007-02-18 16:14
はて?FormもMainMenuも単独のクラスとして分離できているんだから何ら問題ないと思うが?
使うにはFormに貼り付ける必要がある。ただそれだけのこと。 何かいろんなものを混同してないかね? | ||||||||
|
投稿日時: 2007-02-18 17:18
これについては知らないのですが、私も、昔、マイクロソフトが使えと言っていたので、ハンガリアン記法を使っていましたよ。
ここでの「View」とは何に対するビューなのでしょうか? また、ここでの「Form」はビューではないという考えでしょうか? 基本的には、分けられるものは分けておいたほうが、分けないよりは自由度は高くなって良いと思います。しかし、コードを書くソースコードファイルが違うだけ、という分けかたならば、あまり分けることに拘るのも労力の割には得るものがないかもしれません。 たとえば、分けても、メニューがフォームを static で参照していたり、していたら分けたことの意味は薄いと思います。じゃあ、メニューがフォームを参照するようにするか、ということになると、私はそういうのが好きですが、もしチーム開発でそこまで細かくすると、普通、そこまでやるのは嫌われるんじゃないかなあ、と思います。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||
|
投稿日時: 2007-02-18 18:56
>ぶさいくろう,unibonさん
返信ありがとうございます。 疑問に思っている点は、たとえばMainMenuのクリックイベントや 配置されたButtonClickのイベントをFormに記述するべきなのかという点です。 以前Form上に複数のコントロールを配置し、それらのイベントを処理するFormに 膨大な量のソースコードが詰め込まれたことから、このような疑問をもったのですが、 わかりにくい質問ですいません。 | ||||||||
|
投稿日時: 2007-02-18 19:45
構造化言語レベルで考えて Form に記述すべきです。 イベントですから。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-02-18 20:19
>じゃんぬねっとさん
返信ありがとうございます >構造化言語レベルで考えて すみません。 「構造化言語レベル」とはどういった意味なのでしょうか? 集合体としてという意味でしょうか? | ||||||||
|
投稿日時: 2007-02-18 21:43
今している話は
Formと、そこに貼り付けた各コントロール間の関係の話ですか? それともユーザーインターフェイスとビジネスロジックを分けるとかそういった話ですか? | ||||||||
|
投稿日時: 2007-02-18 21:45
フォームであろうと、メニューであろうと、そのイベントハンドラーにコードを詰め込むのは、「フォームと各コンポーネントの分離」以前の問題だと思います。 イベントハンドラーは、main メソッドみたいなものであり、操作の入り口でしかないと考えたほうが良いです。したがって、イベントハンドラーの中には、基本的に別のメソッドを呼ぶだけのコード(通常は10行程度)を書くようにしたほうが良いです。 こういう考えのもとでは、結局は、イベントハンドラーはただの入り口なので、前述したようにどこにあろうとあまりたいした問題ではありません。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} |
1