SOLIDによると、インターフェイスを作成するだけでなく、別のファイルに配置するだけでなく、別のアセンブリに配置する必要があります。
どうして?アセンブリにコンパイルされるソースファイルを変更するには、アセンブリを再コンパイルする必要があり、アセンブリを変更するには、依存するアセンブリを再コンパイルする必要があるためです。したがって、SOLIDに基づく目的が実装Aを実装Bに置き換えることであり、インターフェイスCに依存するクラスCが違いを知る必要がない場合は、アセンブリをIにする必要があります。その中に変更はありませんので、使用を保護します。
「しかし、それはただの再コンパイルです」私はあなたが抗議するのを聞きます。そうかもしれませんが、スマートフォンアプリでは、ユーザーのデータ帯域幅の方が簡単です。変更された1つのバイナリをダウンロードするか、そのバイナリとそれに依存するコードを含む5つの他のバイナリをダウンロードしますか?すべてのプログラムがLAN上のデスクトップコンピューターで使用されるように書かれているわけではありません。帯域幅とメモリが安価な場合でも、Active Directoryまたは同様のドメイン管理レイヤーを介してLAN全体に簡単にプッシュできるため、小規模なパッチリリースは価値があります。ユーザーは、すべてが再インストールされるのに数分かかるのではなく、次回ログインするときに適用されるのを数秒待つだけです。言うまでもなく、プロジェクトをビルドするときに再コンパイルする必要のあるアセンブリが少ないほど、ビルドは速くなり、
さて、免責事項:これは常に可能または実行可能であるとは限りません。これを行う最も簡単な方法は、集中化された「インターフェース」プロジェクトを作成することです。これには独自の欠点があります。永続化レイヤーまたはアプリの他の主要コンポーネントを再利用する他のアプリでインターフェイスプロジェクトと実装プロジェクトを参照する必要があるため、コードの再利用性が低下します。インターフェイスをより緊密に結合されたアセンブリに分割することでこの問題を克服できますが、アプリ内のプロジェクトが増え、フルビルドが非常に苦痛になります。重要なのはバランスであり、疎結合設計を維持します。通常、必要に応じてファイルを移動できるので、クラスに多くの変更が必要な場合、またはインターフェイスの新しい実装が定期的に必要な場合(おそらく、他のソフトウェアの新しくサポートされているバージョンとインターフェイスするため、