- PR -

フォームと各コンポーネントの分離

1
投稿者投稿内容
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-02-18 14:08
設計寄りな質問になりますが、
フォームとメニュー等のコントロールは完全に分離したほうが良いのでしょうか?

以前友人から「マイクロソフトはFormになるべく処理を記述するように言ってる」
と言い、Formにコンポーネントを配置(静的に配置)し、処理を実装していくべきだと主張されました。

私は、Formはあくまで各コントロールの受け皿としか考えておらず、
「Viewにあたる部分のみを記述するべきだ」と考えています。
そちらのほう(動的に配置)が、各コントロールとの結合度を弱めることにも繋がると思うのですが。。。

そこで質問したいことなのですが、
FormとMainMenuなどのコントロールは完全に分離すべきなのでしょうか?
おそらくケースバイケースだとは思うのですが、理由などありましたら、
よろしくお願いします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-02-18 16:14
はて?FormもMainMenuも単独のクラスとして分離できているんだから何ら問題ないと思うが?
使うにはFormに貼り付ける必要がある。ただそれだけのこと。
何かいろんなものを混同してないかね?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-02-18 17:18
引用:

Ierさんの書き込み (2007-02-18 14:08) より:
以前友人から「マイクロソフトはFormになるべく処理を記述するように言ってる」
と言い、Formにコンポーネントを配置(静的に配置)し、処理を実装していくべきだと主張されました。


これについては知らないのですが、私も、昔、マイクロソフトが使えと言っていたので、ハンガリアン記法を使っていましたよ。

引用:

Ierさんの書き込み (2007-02-18 14:08) より:
私は、Formはあくまで各コントロールの受け皿としか考えておらず、
「Viewにあたる部分のみを記述するべきだ」と考えています。
そちらのほう(動的に配置)が、各コントロールとの結合度を弱めることにも繋がると思うのですが。。。


ここでの「View」とは何に対するビューなのでしょうか?
また、ここでの「Form」はビューではないという考えでしょうか?

基本的には、分けられるものは分けておいたほうが、分けないよりは自由度は高くなって良いと思います。しかし、コードを書くソースコードファイルが違うだけ、という分けかたならば、あまり分けることに拘るのも労力の割には得るものがないかもしれません。
たとえば、分けても、メニューがフォームを static で参照していたり、していたら分けたことの意味は薄いと思います。じゃあ、メニューがフォームを参照するようにするか、ということになると、私はそういうのが好きですが、もしチーム開発でそこまで細かくすると、普通、そこまでやるのは嫌われるんじゃないかなあ、と思います。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-02-18 18:56
>ぶさいくろう,unibonさん
返信ありがとうございます。

疑問に思っている点は、たとえばMainMenuのクリックイベントや
配置されたButtonClickのイベントをFormに記述するべきなのかという点です。

以前Form上に複数のコントロールを配置し、それらのイベントを処理するFormに
膨大な量のソースコードが詰め込まれたことから、このような疑問をもったのですが、
わかりにくい質問ですいません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-18 19:45
引用:

Ierさんの書き込み (2007-02-18 18:56) より:

疑問に思っている点は、たとえばMainMenuのクリックイベントや配置されたButtonClickのイベントをFormに記述するべきなのかという点です。


構造化言語レベルで考えて Form に記述すべきです。
イベントですから。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-02-18 20:19
>じゃんぬねっとさん
返信ありがとうございます

>構造化言語レベルで考えて
すみません。
「構造化言語レベル」とはどういった意味なのでしょうか?
集合体としてという意味でしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-02-18 21:43
今している話は
Formと、そこに貼り付けた各コントロール間の関係の話ですか?
それともユーザーインターフェイスとビジネスロジックを分けるとかそういった話ですか?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-02-18 21:45
引用:

Ierさんの書き込み (2007-02-18 18:56) より:
以前Form上に複数のコントロールを配置し、それらのイベントを処理するFormに
膨大な量のソースコードが詰め込まれたことから、このような疑問をもったのですが、
わかりにくい質問ですいません。


フォームであろうと、メニューであろうと、そのイベントハンドラーにコードを詰め込むのは、「フォームと各コンポーネントの分離」以前の問題だと思います。
イベントハンドラーは、main メソッドみたいなものであり、操作の入り口でしかないと考えたほうが良いです。したがって、イベントハンドラーの中には、基本的に別のメソッドを呼ぶだけのコード(通常は10行程度)を書くようにしたほうが良いです。
こういう考えのもとでは、結局は、イベントハンドラーはただの入り口なので、前述したようにどこにあろうとあまりたいした問題ではありません。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
1

スキルアップ/キャリアアップ(JOB@IT)