1

私はinterface、さまざまな で拡張される C# プロジェクトで を設計していextension methodsます。ここで、拡張メソッドを含む静的クラスをインターフェース自体と同じファイルに入れることを考えました。

これが の原則に反しているかどうかはわかりません1 thing per file。これは非常に密接に関連しているため、同じファイルに入ることができると考える傾向があります。それでも、経験豊富な開発者の意見を聞きたいです。

保守性、コードの可読性、優れた構造の観点から、ここに行くにはどうすればよいでしょうか? 私は次のようなことを考えました:

public interface IFoo
{
    int Property { get; }
    void Method();
}

public static class IFooExtensions
{
    public static void AnExtension(this IFoo foo)
    {
        // Do Something
    }

    public static void AnotherExtension(this IFoo foo)
    {
        // Do Something else
    }
}

これらすべてが同じファイルに入る場所。アドバイスをありがとう!

4

3 に答える 3

4

「ファイルごとに 1 つのこと」という規則には、いくつかの実際的な例外があることがわかりました。インターフェイスは一般的なケースです。おそらく、そのインターフェースのコンテキストでのみ使用される単純な列挙型が必要な場合や、 @jlew で言及されているようにインターフェースとその実装をペアにする場合、またはあなたの場合、おそらくいくつかの単純な拡張メソッドを同じファイルに入れることができます。ただし、実装が複雑になる場合は、それらを別のファイルに移動します。

ただし、拡張メソッドは、それらが定義されている名前空間をインポートすることによって使用可能になることに注意してください。したがって、拡張メソッドの一般的な使用法を検討してください。おそらく、これらの拡張メソッドが使用される特定のコンテキストに関連付けられている別の名前空間があるでしょう。しかし、これらの拡張メソッドが汎用である場合は、それらをインターフェイス自体と同じ名前空間に保持し、おそらく同じファイルに保持することが理にかなっています。

于 2013-06-11T13:03:53.263 に答える
2

それでいいと思います。Visual Studio のコード ナビゲーション機能や ReSharper などのツールを使用する場合、ファイルはほとんど関係ありません。私は密接に関連するものをまとめるのが好きです (単純なインターフェースとその 1 つの具体的な実装など)。

于 2013-06-11T13:00:12.560 に答える
1

インターフェイスのような別のファイルを1つのファイルに配置し、クラスをインターフェイスを継承する別のファイルに配置する必要があります。そうする場合、異なるクラスのインターフェイスを使用して同じ署名を取得できます。インターフェイスの「I」で始まるクラス名を変更します。

于 2013-06-11T13:05:20.893 に答える