オブジェクト自体に処理させるのではなく、フォームオブジェクトがどのような種類のコードを処理する必要があるかについて、厳格なルールを持っている人はいますか? たとえば、レースがある場合、レースをしているオブジェクトは馬と言うべきで、レースを馬であることの一部として扱うべきでしょうか、それともフォームオブジェクト内に配置する方が良いでしょうか? 私が求めているのは、メソッドと言うように馬のようなオブジェクトに何が入り、馬ではなくフォームオブジェクトに何が入るかをどのように決定するかということだと思います。この場合、コードを最適に抽象化する場所を特定するために使用するルールはありますか?
5 に答える
これを「関心の分離」と呼びます。フォームに表示とユーザー操作を処理させます。Racer
ハンドルレースをしましょう。
私は、UI に依存しないコア機能が、そのタスクを担当するクラスに抽象化されるように、ソフトウェアを開発しようとしています。
考えてみてください:
コードを複製せずに GUI インターフェイスとコンソール インターフェイスの両方を使用できるようにするにはどうすればよいでしょうか。
UI はビジュアルとユーザー インタラクションのみを処理する必要があります。他のすべては、その役割に基づいて整理する必要があります。
ここに絶対的な正解があるかどうかはわかりません。しかし、ジョン・サンダースに同意しました。「フォーム」のジョブは、主にユーザーにデータを表示し、データ入力を受け入れる役割を果たします。あなたがそれをそれに近づけるほど、それだけです。このタイプのデータを使用する別の場所がある場合を考えてみてください。コードが別の場所にある場合は、再利用できます。
「ビジネス オブジェクト」または「ファサード」に、レースのロジックとそれを表示するフォームを処理させます。
物事を現実世界のありのままに表現してみてください。馬の特性や行動を説明するものはすべて馬オブジェクトに属します。レースのプロパティやアクションを記述するもの (おそらく馬オブジェクトのコレクションを含む) はすべて、レース オブジェクトに属します。フォームは現実世界のオブジェクトではなく、馬やレースなどからの情報を表示するための単なるガジェットです。したがって、実際のデータを画面に表示するために必要な場合を除き、フォームには何も保存しないでください。
フォームは UI の一部であるため、UI の厳格な規則を適用します。UI = データの書式設定、並べ替え、表示、および入力の受け入れと検証