패키지 이름은 단수 또는 복수 여야합니까?


227

종종 라이브러리에서 패키지에는 단일 개념을 중심으로 구성된 클래스가 포함되어 있습니다. 예 : XML, SQL, 사용자 설정, DB . 우리 모두이 패키지가 단수로 정확하다고 생각합니다 .

com.myproject. xml .Element
com.myproject. sql .Connection
com.myproject. 사용자
. 사용자 com.myproject . 사용자 .UserFactory

그러나 실제로 작업, 규칙, 처리기, 모델 등과 같은 단일 유형의 구현 모음이 포함 된 패키지가 있다면 바람직합니까?

com.myproject. tasks .TakeOutGarbageTask
com.myproject. tasks .DoTheDishesTask
com.myproject. 작업 .PaintTheHouse 작업

또는

com.myproject. task .TakeOutGarbageTask
com.myproject. task .DoTheDishesTask
com.myproject. task.PaintTheHouse 작업


5
데이터베이스 테이블 이름과 같은 단수 는 항상 단수 여야하지만 다른 이유가 있습니다. 예를 들어 Java 또는 Python과 같은 인기있는 표준 라이브러리를 살펴보십시오.

@Jarrod Roberson : 정답을 올릴 수 있도록 답변을 답변으로 게시하십시오.
S.Lott

@Jarrod는 표준 라이브러리에서 대부분의 클래스가 내가 나열된 첫 번째 범주에 속하기 때문에 몇 가지 예가 필요합니다 .
Nicole

@Renesis 업데이트 된 답변을 살펴보십시오.
Matthew Rodatus

@Matthew-마음에 듭니다. 당신은 내가 의심 한 것을 표현했지만 어떻게 체계화해야할지 모르겠습니다.
Nicole

답변:


293

동종 컨텐츠가 포함 된 패키지에는 복수를 사용하고 이종 컨텐츠가 포함 된 패키지에는 복수를 사용하십시오.

클래스는 데이터베이스 관계와 유사합니다. 데이터베이스 관계는 레코드가 관계의 인스턴스로 간주되므로 단수로 이름을 지정해야합니다. 관계의 기능은 간단한 데이터에서 복잡한 레코드를 작성하는 것입니다.

반면 패키지는 데이터 추상화가 아닙니다. 코드 구성 및 명명 충돌 해결을 지원합니다. 패키지의 이름이 단수로되어 있다고해서 패키지의 각 멤버가 패키지의 인스턴스라는 의미는 아닙니다. 관련이 있지만 이기종 개념이 포함되어 있습니다. 복수형으로 명명 된 경우 ( 종종 그렇듯이 ) 패키지에 동종 개념이 포함될 것으로 예상됩니다.

예를 들어 유형은의 인스턴스를 포함하는 모음이므로 이름 TaskCollection대신 이름을 지정해야합니다 . 패키지라는 것이 포함 된 각 클래스가 작업의 인스턴스 라는 것을 의미하지는 않습니다. , a 등 이있을 수 있습니다. 그러나 이라는 패키지 에는 모든 작업 인 , 등의 다른 유형이 포함됩니다 .TasksCollectionTaskcom.myproject.taskTaskHandlerTaskFactorycom.myproject.tasksTakeOutGarbageTaskDoTheDishesTask


13
비슷한 질문은 english.stackexchange.com/q/25713을 참조하십시오 . 카테고리는 단수와 유사하고, 유형은 복수 유사하다.
Matthew Rodatus

4
제공 한 바로 링크 는이 규칙에 대한 예외를 보여줍니다. beans복수형이지만 java.beansJavaBeans에 관련된 모든 종류의 클래스를 포함합니다.
SkyDan

좋은 대답이지만 데이터베이스 관계 논리에 동의하지 않습니다. ERD의 관계는 엔티티 간 관계를 표시하기 때문에 특이합니다. 테이블은 관계의 실제 구현이며 여러 행을 보유하므로 복수 IMO 여야합니다. "이 표의 내용은 무엇입니까?" "사용자"가 아닌 "사용자"입니다. 물론 엔터프라이즈 환경 (C #, Java)에서는 Ruby, Python, Javascript 및 PHP와 같은 커뮤니티보다 단일 이름 지정이 더 일반적입니다.
ryeguy

4
@SkyDan의 의견은 여기에서 완전히 간과되는 매우 중요한 것을 지적합니다. "java.beans"의 복수 이름은 실제로는 실수였으며 대신 "java.bean"이라는 이름으로 지정되었습니다.
Vicky Chijwani

6
@VickyChijwani @SkyDan JavaBeans ™는 상표이므로 기술 자체를 지칭하기 위해 이름을 그대로 유지하고 싶었 기 때문에 사용했습니다 java.beans.
Hejazi

1

이것은 아마도 특정 언어에 달려 있습니다. .NET (C #)에서 네임 스페이스 유형 이름 충돌이 발생할 가능성이 가장 큰 경우 (복수) 복수형이어야합니다 type name expected but namespace found. 나는 이것을 다루었 고, 유쾌하지 않으며 코드 전체에서 유형 이름이 과도하게 자격이됩니다. .

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