5

SA1402は素晴らしいルールだと思いますが、ジェネリックに問題があります。デリゲートを使用するクラスがあるFuncので、名前はその署名とほぼ同じです。つまりOperation<TType>Operation<T, TType>、などの名前のクラスがありOperation<T1, T2, TType>ます。SA1402によると、これらすべての小さなクラスを別々のファイルに入れ、ファイル名に奇妙な装飾を施す必要があります。さらに、これらの項目の 1 つを変更する必要がある場合は、通常、残りの項目を変更する必要があります。これは、単一のモジュールよりもサポートしにくいようです。

SA1402が同じ基本クラスのジェネリック (およびパーシャル) を 1 つのファイルに格納できるようにすることは理にかなっていますか? この場合、クラスのすべての順列はOperation「Operation.cs」に存在します。

4

3 に答える 3

2

私はあなたに同意する傾向があります。一般的に、SA1402 は良い考えです。しかし、この特定のケースと、それが好きな他のケースでは(私は同じクラスのジェネリックと非ジェネリックの実装を持っています)。他の多くの人と同じように、 ファイルごとに複数のクラスを持つことは、理にかなっていればまったく問題ないと思います。Scope私は非常に具体的なレベルでこの警告を無視することにしましたTarget:

[assembly: SuppressMessage(
    "StyleCop.CSharp.MaintainabilityRules",
    "SA1402:FileMayOnlyContainASingleType",
    Justification = "How else would we name generic and non generic (https://stackoverflow.com/a/4063061/516433).",
    Scope = "type",
    Target = "~T:Pastdev.Cli.AppResources`1<!!0>")]
于 2018-12-29T20:58:30.933 に答える