クラスの命名:単数または複数?[閉まっている]


58

クラス名に単数形と複数形を選択することは、私にとって常に困難です。

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

また、複合名の場合はさらに難しくなります。

OrderCustomerRepository対OrderCustomersRepository対OrdersCustomersRepository

どのアプローチを好むのですか?


クラスには複数の顧客用のリポジトリが含まれますか?それが1人の顧客の1つのリポジトリである場合
JeffO

2
@Jeff O、リポジトリは同時ににgetCustomerByIdとGetCustomersメソッドを含むことができる
SiberianGuy

2
データモデリングでは、テーブル名は単数形にする必要があります。アプリケーションがデータモデルに1-1に対応するドメインクラスを使用している場合は、名前を単数形にすることをお勧めします。もちろん、クラスを1-1の方法でテーブルにマッピングすることは、オブジェクト指向アプリケーションのオブジェクトモデルを構築する最良の方法ではないかもしれませんが、これは問題の横にあります。
-NoChance

回答:


73

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

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

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

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


2
customerCollectionコレクションに使用しますが、残りの部分については同意します。これは、データベース設計のベストプラクティスであり、コードでも非常に適切に機能します。
-Jan_V

12
ここでは「コレクション」のような言葉が嫌いです。英語には、複数形を使用して、物のコレクションを完全に参照する良い方法があります。
ロボット

代わりのCollection方法についてはIterator
ジュリアン

@Julian An Iteratorは、複数のオブジェクトを保持するためのデータ構造ではなく、ある種のコルーチンですよね?
ウィルソン

64

単数形を使用します。ネジを回すツールは、「ネジ回し」ではなく「ネジ回し」と呼ばれます。

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


7

間違いなく単数。のオブジェクトを作成するのではなく、オブジェクトのPeopleコレクションを作成しPersonます。私は複数形を使用する唯一の時間は、静的なクラス、すなわちのためになるSupportServicesStringUtilsなどしかし、この場合には、クラスが何よりも名前空間として多くの役割を果たします。


1
考えてみると、この間ずっとPeoplesコレクションを使用してきました!
ヨルダン

2
List <person> people ...私には大丈夫なようです、@ Jordan。
スティーブンV

1

クラスはオブジェクトのテンプレートであることに注意してください。参照しているオブジェクトについて考えてください。

多くの場合、特にORMエンティティの場合は、単一のエンティティです。コレクションである場合もあります。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.