클래스 명명 : 단수 또는 복수? [닫은]


58

클래스 이름에 대해 단수형과 복수형 중 하나를 선택하는 것은 항상 어렵습니다.

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

복합 이름의 경우 훨씬 더 어렵습니다.

OrderCustomerRepository vs. OrderCustomersRepository vs. OrdersCustomersRepository

어떤 접근법을 선호하고 왜 그런가요?


클래스에 여러 고객을위한 저장소가 포함됩니까? 한 고객을위한 하나의 저장소라면 ...
JeffO

2
O @Jeff, 저장소는 같은 시간에 GetCustomerById 및 GetCustomers 방법을 포함 할 수 있습니다
SiberianGuy

2
데이터 모델링에서 테이블 이름은 단수 여야합니다. 응용 프로그램에서 데이터 모델에 1-1에 해당하는 도메인 클래스를 사용하는 경우 이름을 단수로 유지하는 것이 좋습니다. 물론 클래스를 1-1 방식으로 테이블에 매핑하는 것이 OO 응용 프로그램의 개체 모델을 작성하는 가장 좋은 방법은 아니지만 이것이 문제의 여지가 있습니다.
NoChance

답변:


73

내가 복수하는 유일한 것은 컬렉션입니다.

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

모든 예제는 개별 개체이므로 복수형이 아닙니다. 예, 이름은 여러 인스턴스가있을 수있는 개체를 나타내지 만 이름에서 알아야 할 것은 개체 엔터티 (예 : 고객)뿐입니다.

따라서 모든 예 에서 단수형이 올바른 형식입니다. 인생을 훨씬 쉽게 만듭니다.


2
나는 customerCollection컬렉션에 사용하지만 나머지는 동의합니다. 이것은 데이터베이스 디자인에서 가장 좋은 방법이며 코드에서도 잘 작동합니다.
Jan_V

12
나는 여기서 "컬렉션"과 같은 단어를 싫어한다. 영어는 복수를 사용하여 여러 가지 사물을 참조하는 완벽한 방법입니다.
로봇 고트

대신 Collection에 대해 어떻게 Iterator?
율리우스

@Julian An Iterator은 여러 객체를 보유하기위한 데이터 구조가 아닌 일종의 공동 루틴 일 것입니다.
Wilson

64

단수를 사용하십시오. 나사를 돌리는 도구를 "나사 드라이버"가 아닌 "나사 드라이버"라고합니다.

그러나 메소드 및 특성 이름을 적절히 복수화하여 하나의 값 또는 콜렉션이 리턴되는지 여부를 표시하십시오.


7

단수입니다. 의 객체를 만들지 않고 객체 People컬렉션을 만듭니다 Person. 내가 복수형을 사용하는 유일한 정적 클래스, 즉이 될 것입니다 SupportServices, StringUtils등 그러나이 경우, 클래스가 다른 무엇보다도 네임 스페이스로 많은 역할을합니다.


1
그리고 생각하기 위해, 나는 이번에 Peoples 컬렉션을 사용하고 있습니다!
Jordan

2
목록 <사람> 사람 ... 나에게 괜찮아 보인다, @Jordan.
StevenV

1

클래스는 객체의 템플릿입니다. 따라서 당신이 말하는 대상에 대해 생각하십시오.

종종 ORM 엔터티 인 경우 단일 엔터티입니다. 때로는 컬렉션 일 수도 있습니다.

나는 그 대답이 상황에 따라 다르다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.