プレゼンテーションのドメイン分離

2003年10月9日

私が発見して実践した最も有用な設計原則の 1 つは、プログラムのプレゼンテーション面 (ユーザーインターフェイス) とその他の機能との分離を適切に保つというものです。この方法が実施されているのを多年見てきて、たくさんのメリットがあることが分かりました。

  • プレゼンテーションロジックとドメインロジックが分離されていると、理解しやすくなります。
  • コードを複製せずに、同じ基本プログラムに複数のプレゼンテーションをサポートできます。
  • ユーザーインターフェイスのテストは困難ですが、分離により、テストしやすい場所に多くのロジックを保持できます。
  • スクリプティングやサービスとして公開するプログラム API を簡単に追加できます (実際、私はこれらを代替プレゼンテーションと見なしています)。
  • プレゼンテーションコードは、ドメインコードとは異なるスキルと知識を必要とします。

これら多くの利点があるにもかかわらず、この原則がしばしば破られているのを見かけます。これは知識不足が一部原因だと思われますし、多くのフレームワークではドメインロジックをプレゼンテーションに簡単に混在させてしまい、分離を維持することが困難になっているという事実も一部原因だと考えられます。

クライアント/サーバーの物理的な分離であるという間違いを犯さないでください。すべてのコードが同じマシンで実行されている場合でも、この論理的な分離を行う価値は十分にあります。

この原則はモデル・ビュー・コントローラー (MVC) で最も顕著な部分であり、実際、多くの人にとって MVC はこの分離を説明する方法です。

ウェブサービスなどのものはプレゼンテーションであることも覚えておいてください。人間のユーザーではなく、コンピューターユーザーが使用するとしてもです。したがって、ウェブサービスをサポートするために必要なコードや、実際、他の外部 API にドメインコードを混在させないでください。

(IEEE Software コラム でもこのことについて書きました。)