0

まず、次のようなクラスシグネチャがあります。

internal class JobStore : IJobStore
{
    private readonly IFileHandler fileHandler;
    private readonly IJobSerializer serializer;
    private readonly IJobValidator validator;
    internal readonly string DirectoryPath = "JobStore";
    internal readonly string JobExtension = ".job";

    public JobStore(IFileHandler fileHandler, IJobSerializer jobSerializer, IJobValidator jobValidator)...

DirectoryPathと拡張機能を独自のクラスに削除したいのですが、よくわかりません。ただし、コンストラクターに4つのオブジェクトを含めることは悪い考えだと思います。

私の質問は、これらのオブジェクトの2つを組み合わせて、このメソッドに取り込むパラメーターの数を減らすにはどうすればよいでしょうか。3つは多すぎますか?

質問のあいまいさについてお詫び申し上げます。

4

4 に答える 4

4

Aggregate Services にリファクタリングする必要があるようです。

于 2012-07-12T19:32:02.440 に答える
0

コンストラクター内の 4 つのオブジェクトは多すぎません。「多すぎる」と見なされる特定の数のパラメーターはありません。

コンストラクターを使用するかどうかについては、他にもグレーの基準がありますが、特定のパラメーター数は、焦点を当てるべき場所ではありません。

クラスがある種の名詞を表していることを確認してください。

于 2012-07-12T19:36:51.513 に答える
0

複数のパラメーターを持つコンストラクターを使用できますが、問題ありません。実際、3 つというのは少数のパラメーターです。おそらく、n 個のパラメーターを持つメソッドとコンストラクターがあり、それらすべてが必要な場合に限ります。

于 2012-07-12T19:46:43.667 に答える
0

使用時に必要なパラメーターの数が気になる場合は、デフォルトのパラメーターを使用すると役立つ可能性があります。

そうすれば、1 つまたは 2 つのパラメーターのみを変更し、それ以外は常にデフォルトを使用する場合、新しいパラメーターを多く渡す必要はありません。

ただし、これはコンストラクター自体からパラメーターを取得しません。

だから、あなたが何を探しているのかわかりませんが、おそらくこれがあなたを助けるかもしれません. :)

http://msdn.microsoft.com/en-us/library/dd264739.aspx

于 2012-07-12T19:48:55.893 に答える