web-dev-qa-db-ja.com

クラスの命名:単数か複数か?

クラス名を単数形と複数形のどちらにするかを選択するのは常に困難です。

CustomerRepository vs. CustomersRepository
CustomerService vs. CustomersService
CustomerController vs. CustomersController

そして、合成名の場合はさらに困難です。

OrderCustomerRepositoryとOrderCustomersRepositoryとOrdersCustomersRepository

あなたはどのアプローチを好みますか、そしてその理由は?

66
SiberianGuy

私が複数形にする唯一のものはコレクションです。

foreach (var customer in customers)
{
    // do something with customer
}

すべての例は個別のオブジェクトであるため、複数形ではありません。はい、名前は複数のインスタンスを持つ可能性のあるオブジェクトを参照していますが、名前で知っておく必要があるのはオブジェクトエンティティ(顧客)だけです。

したがって、すべての例で、単数形が正しい形式です。人生をずっと楽にします。

76
Robert Harvey

単数形を使用します。ねじを回す工具は「ねじ回し」ではなく「ねじ回し」と呼ばれます。

ただし、1つの値またはそれらのコレクションが返されるかどうかを示すために、それに応じてメソッド名とプロパティ名を複数形にしてください。

69
back2dos

間違いなく特異です。 Peopleのオブジェクトを作成するのではなく、Personオブジェクトのコレクションを作成します。複数形を使用するのは、静的クラス、つまりSupportServicesStringUtilsなどの場合のみです。ただし、この場合、クラスは何よりも名前空間として機能します。

8
Rob

クラスはオブジェクトのテンプレートであることを忘れないでください。だからあなたが参照しているオブジェクトについて考えてください。

多くの場合、特にORMエンティティの場合は、単一のエンティティです。時にはそれはコレクションかもしれません。

答えは文脈に固有のものだと思います。

2
indi