11

私は新しいシステムを設計しており、システムとともに成長する多くのインターフェースを持っています。このインターフェイスに名前を付けるベスト プラクティスは何ですか

ISomethingV01
ISomethingV02
etc

そして私はこれをします

public interface ISomething{
      void method();
}

次に、方法2を追加する必要があるので、今何をしますか?

public interface ISomethingV2:ISomething{
      void method2();
}

または同じ他の方法ですか?

4

5 に答える 5

7

インターフェイスを使いすぎていると思います。

Meyer と Martin は次のように語っています。

そして、Cwalina (他) は次のように繰り返しました。

フレームワーク設計ガイドラインから...

一般に、クラスは、抽象化を公開するための推奨される構造です。インターフェイスの主な欠点は、API の進化を可能にするという点で、クラスよりもはるかに柔軟性が低いことです。インターフェイスを出荷すると、そのメンバーのセットは永久に固定されます。インターフェイスに追加すると、インターフェイスを実装している既存の型が壊れます。

クラスは、はるかに柔軟です。出荷済みのクラスにメンバーを追加できます。メソッドが抽象的でない限り (つまり、メソッドの既定の実装を提供する限り)、既存の派生クラスは変更されずに機能し続けます。

代替テキスト

于 2008-09-05T02:47:38.310 に答える
5

理想的には、インターフェイスを頻繁に変更しないでください (変更する場合)。インターフェイスを変更する必要がある場合は、その目的を再考し、元の名前が引き続き適用されるかどうかを確認する必要があります。

インターフェイスが変更されると思われ、インターフェイスの変更が小さく (項目の追加)、コード ベース全体を制御できる場合は、インターフェイスを変更してすべてのコンパイル エラーを修正する必要があります。

変更がインターフェイスの使用方法の変更である場合は、その別の使用パターンをサポートするために別のインターフェイスを (おそらく別の名前で) 作成する必要があります。

最終的に ISomething、ISomething2、および ISomething3 を作成したとしても、インターフェイスのコンシューマーはインターフェイス間の違いを理解するのに苦労するでしょう。いつ ISomething2 を使用し、いつ ISomething3 を使用する必要がありますか? 次に、ISomething と ISomething2 を廃止するプロセスに取り掛かる必要があります。

于 2008-09-05T02:29:49.770 に答える
4

Garo Yeriazarianに同意します。インターフェイスの変更は重大な決定です。また、新しいバージョンのインターフェイスの使用を促進したい場合は、古いバージョンを廃止済みとしてマークする必要があります。.NET ではObsoleteAttributeを追加できます。

于 2008-09-05T02:39:33.070 に答える
2

インターフェイスの目的は、型で実装する必要がある抽象パターンを定義することです。

次のように実装することをお勧めします。

public interface ISomething

public class Something1 : ISomething
public class Something2 : ISomething

同じインターフェイスの複数のバージョンを作成しても、コードの再利用性やスケーラブルな設計という形で得られるものは何もありません。

于 2008-09-05T02:18:39.923 に答える
2

人々があなたの投稿に反対票を投じる理由がわかりません。適切な命名ガイドラインは非常に重要だと思います。

前との互換性を維持する必要がある場合。同じインターフェイスのバージョンでは、継承の使用を検討してください。新しいバージョンのインターフェイスを導入する必要がある場合は、次のルールを検討してください。

インターフェイスに意味のある接尾辞を追加してみてください。簡潔な名前を作成できない場合は、バージョン番号を追加することを検討してください。

于 2008-09-05T02:20:27.923 に答える