- PR -

ユーザーコンポーネント内の値の取得・設定方法について

1
投票結果総投票数:34
プロパティだろ? 33 97.06%
メソッドが良いよね? 1 2.94%
両方実装すれば? 0 0.00%
その他 0 0.00%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2006-11-17 16:18
皆さんこんにちは。
VS.NET2005(C#)でWindowsアプリ開発をするにあたり、今後共通で使えるように
ユーザーコントロールで共通コンポーネントを作ろうとしています。

例えば、コードと名称を入力する2つのTextBoxが貼り付けられたユーザーコント
ロールを作るとします。
Tab順序や各TextBoxのValidatingイベントでの処理などは、このユーザーコント
ロールに予め実装しておきます。

後は、各TextBoxに値をセットしたり、入力した値をゲットする処理を作るだけ
なのですが、どのような方法をとるかで、以下の2つの方法を思いつきました。

ユーザーコントロールにプロパティを用意して、プロパティを使ってTextBoxの
値の設定・取得を行う方法。
ユーザーコントロールにメソッドを用意して、メソッドを使ってTextBoxの値の
設定・取得を行う方法。

個人的には、プロパティというものにあまり馴染みが無いので、メソッドを
用意するのが良いのかな?と考えているのですが・・・

皆さん、こんな時はどちらの方法を選択してますか?
或いは、他にもっと良い方法があったりしますでしょうか?

ご意見等、宜しくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-17 16:29
デザイナとの都合を考えると、今回はプロパティが望ましいと思います。

それ以外の場合は、一概にこれとは言い切れないので、投票はしていません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まりも
ベテラン
会議室デビュー日: 2006/08/19
投稿数: 77
投稿日時: 2006-11-17 18:47
.NET Frameworkにあるコントロールや、それ以外のクラスを使ってみればわかりますが、
プロパティは慣れるとすごく便利です。

非常に直感的なコードで、取得、設定ができますし、コントロールの場合はデザイナでグラフィカルに操作することさえできます。

ただ、あまりに気軽に使えすぎるので、
多少複雑な、「実行している」ことを使用者に意識してほしい場合は、
私はメソッドにするようにしています。

取得に伴い、直接関係ない内部状態が変更されるとか。
取得に伴い、ファイルを読みに行く処理が発生するとか。
そういう場合です。

Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2006-11-17 20:22
今回のような場合ですとプロパティで私は実装します。

メソッドにするかどうかの切り分けとしては、それが動作を表すかどうか、
という点を気にするようにはしています。

実装としては極端な話「どちらでもいい」ので設計思想によるところかな・・・
などと個人的には思いますね。
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2006-11-20 18:08
皆さん、投票・ご意見等ありがとうございます。

今のところ全員一致でプロパティですね。
もうちょっとコントロールが増えたり、TextBox以外の(例えばDateTimePicker等)が
ユーザーコントロール内に張られたりしたらプロパティは厳しいかな?
とも思ったのですが、よくよく考えたらコモンコントロールは基本的にプロパティで
値の設定などを行えてるんだから、それを利用して作成したユーザーコントロールも
プロパティを使えないわけが無いですね。

皆さんのご意見を参考に、単に値の設定などではプロパティで実装。
動作など副次的な何かが発生する、或いは明示的に何かをさせたい等の場合は
メソッドで実装。
という方向で進めていこうと思います。

皆さん、有難うございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-20 22:30
引用:

梶さんの書き込み (2006-11-20 18:08) より:

皆さんのご意見を参考に、単に値の設定などではプロパティで実装。
動作など副次的な何かが発生する、或いは明示的に何かをさせたい等の場合はメソッドで実装。
という方向で進めていこうと思います。


とはいえ、コントロールとしての外観変化、バインドなどは、プロパティで良いです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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