状況に応じて両方のオプションが望ましい場合があるため、このような単純化された例で言うのは難しいです。ただし、一般的に言えば、コントロールから直接値を取得するよりも、(最初の例のように) 値を引数として取得することをお勧めします。理由はいろいろありますが、以下のようなことが思い浮かびます。
Reusability
- 別のコントロール、ファイル、メッセージ、またはその他の場所から値を取得する場合でも、どこからでもメソッドを呼び出すことができます。
Readability
- コードが何をしているのか、その理由を簡単に理解できる
Testability
- UI に触れることなく、コードにさまざまな値を渡して結果をテストできるため、コードのテストが容易になります。
原則として、コントロールから値をできるだけ早く (通常はコントロールのイベントですぐに) 取得し、その値をパラメーターとしてさまざまなビジネス メソッドに渡す必要があります。コントロールを結果で更新する必要がある場合は、コントロールをできるだけ遅く設定する必要があります。ビジネス メソッドは、コントロールの値を直接設定するのではなく、値を返す必要があります。
ただし、そうは言っても、UI を完全に、または少なくともほぼ完全に処理するメソッドがある場合は、コントロールを直接操作することが理にかなっています。たとえば、UI のノード レイアウトを定義する XML ファイルからのデータをツリー コントロールに入力する場合、メソッドでツリー コントロールに直接アクセスすることが理にかなっている場合があります。データをある種のツリー データ構造にロードして、ツリー データ構造を読み込んでツリーにデータを入力することは必ずしも意味がありません。場合によります。基本的に、それが UI ヘルパー メソッド (特定のコントロールを操作しやすくするためのもの) である場合、場合によっては、コントロールを直接操作することが理にかなっています。それ以外の場合、それが標準的なビジネス ロジック メソッドである場合は、