종종 라이브러리에서 패키지에는 단일 개념을 중심으로 구성된 클래스가 포함되어 있습니다. 예 : 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 작업
답변
동종 컨텐츠가 포함 된 패키지에는 복수를 사용하고 이종 컨텐츠가 포함 된 패키지에는 복수를 사용하십시오.
클래스는 데이터베이스 관계와 유사합니다. 데이터베이스 관계는 레코드가 관계의 인스턴스로 간주되므로 단수로 이름을 지정해야합니다. 관계의 기능은 간단한 데이터에서 복잡한 레코드를 작성하는 것입니다.
반면 패키지는 데이터 추상화가 아닙니다. 코드 구성 및 명명 충돌 해결을 지원합니다. 패키지의 이름이 단수로되어 있다고해서 패키지의 각 멤버가 패키지의 인스턴스라는 의미는 아닙니다. 관련이 있지만 이기종 개념이 포함되어 있습니다. 복수형으로 명명 된 경우 ( 종종 그렇듯이 ) 패키지에 동종 개념이 포함될 것으로 예상됩니다.
예를 들어 유형은의 인스턴스를 포함하는 모음이므로 이름 TaskCollection
대신 이름을 지정해야합니다 . 패키지라는 것이 포함 된 각 클래스가 작업의 인스턴스 라는 것을 의미하지는 않습니다. , a 등 이있을 수 있습니다. 그러나 이라는 패키지 에는 모든 작업 인 , 등의 다른 유형이 포함됩니다 .TasksCollection
Task
com.myproject.task
TaskHandler
TaskFactory
com.myproject.tasks
TakeOutGarbageTask
DoTheDishesTask
답변
이것은 아마도 특정 언어에 달려 있습니다. .NET (C #)에서 네임 스페이스 유형 이름 충돌이 발생할 가능성이 가장 큰 경우 (복수) 복수형이어야합니다 type name expected but namespace found
. 나는 이것을 다루었 고, 유쾌하지 않으며 코드 전체에서 유형 이름이 과도하게 자격이됩니다. 예 .