14

私が一緒に働いていた以前のチームでは、データ層とプレゼンテーション層の間のビジネス ロジックを処理するために新しい Service クラスが作成されるたびに、次のようなことが行われていました。

class DocumentService
{
    public DocumentRepository DocumentRepository { get; set; }

    public DocumentService()
    {
         if (DocumentRepository == null) DocumentRepository = new DocumentRepository();
    }
}

チェックがあった理由がよくわかりませんでしnullた。コンストラクターが呼び出されている場合、それはnullである必要があることを意味します..それは新しいインスタンスだからですよね?

なぜこれが行われるのでしょうか?冗長な手順のように思えますが、何かを見逃して悪い習慣として渡したくありません。

4

5 に答える 5

17

この正確なコンテキストでは、はい、冗長です。

このコードに直接的な理由はありません。古いメソッドの残り物であるか、複数のコンストラクターを使用した実装を予期している可能性があります。しかし、この「パターン」を使用したり、このコードを保持したりすることはお勧めしません。

于 2013-05-22T13:21:52.997 に答える
5

DocumentRepository の == 演算子が上書きされている可能性があります。

于 2013-05-22T13:29:02.300 に答える
5

私が知る限り、あなたは完全に正しいです。をチェックする必要はありませんnull

于 2013-05-22T13:23:07.677 に答える