문제

우리는 OSGi에 대한 대규모 프로젝트를 수행하고 일부 공용 모듈을 추가하고 있습니다.유물 이름을 지정하는 것에 대한 논의가 있습니다.

따라서 모듈 이름을 지정할 때 한 가지 가능성은 다음과 같습니다.

cmns-definitions (을 위한 일반적인 정의), 다른 하나는 cmns-definition, 또 다른 하나는 cmns-def.이는 패키지 이름에도 영향을 미칩니다.이제는xx.xxx.xxx.xxx.xxx.commons.definitions,로 변경하는 경우 cmns-def 그럴 것이다 xx.xxx.xxx.xxx.xxx.commons.def.

이 패키지 내부에는 시스템 전체에서 사용되는 열거형 및 기타 정의와 같은 클래스가 있습니다.

나는 개인적으로 의지한다 cmns-definitions 패키지 안에 정의가 1개만 있는 것이 아니기 때문입니다.다른 사람들은 그걸 지적하는데 java.util 예를 들어 거기에는 유틸리티가 하나만 있지 않습니다.아직, java.util 이다 약어 나를 위한.그것은 의미할 수 있다 자바 유틸리티 또는 자바 유틸리티.같은 일이 일어납니다 commons-lang.

패키지 이름을 어떻게 지정하시겠습니까?왜 이 이름을 선택하시겠습니까?

  1. cmns-definitions
  2. cmns-definition
  3. cmns-def

보너스 질문:다음과 같은 이름을 지정하는 방법 cmns-exceptions?저는 그렇게 이름을 지었습니다.이름을 지어줄래? cmns-xcpt?

편집하다:

나는 이것에 대해 확인되거나 반박되기를 바라며 내 생각을 던지고 있습니다.가능하다면 그렇게 해주세요.

내 생각에 이름을 붙이는 배경은 그 안에 들어 있는 내용을 더 쉽게 이해하기 위해서라고 생각합니다.또는 Peter Kriens에 따르면 패턴을 통해 프로세스를 쉽게 기억하고 자동화할 수 있습니다.둘 다 유효한 주장입니다.

내 추론은 패턴 측면에서 다음과 같습니다.

1) 실증이 발생하고 업계에 잘 알려져 있는 경우에는 이를 따라 명명합니다.
예:"기능"이 이에 대한 경우입니다.cmns-features라는 모듈이 있습니다.이는 이 모듈에 많은 기능이 있다는 것을 의미합니까?아니요.이는 "Apache karaf의 "기능" 파일을 구현하는 모듈"을 의미합니다.
"commons"는 업계에서 통용되는 "common"의 실체입니다."많은 공통점"을 의미하지는 않습니다."공통코드"를 의미합니다.

예를 들어 extr-commons를 모듈 이름으로 보면 여기에 extr(이 경우 추출)에 대한 공통 코드가 포함되어 있다는 것을 알 수 있습니다.

2) 모듈 내부의 여러 클래스가 협력하여 전체에 뚜렷한 "하나뿐인" 의미를 부여하는 경우 단수형을 사용하여 이름을 지정합니다.

대부분의 모듈이 여기에 포함되어 있습니다.cmns-persistence-jpa라는 이름을 지정하면 내부의 모든 클래스가 함께 협력하여 cmns-persistence-api의 jpa 구현을 제공한다는 의미입니다.그 안에 2개의 구현이 있을 것으로 기대하지는 않지만 실제로는 함께 하나의 구현을 만드는 수많은 클래스가 있습니다.나에게는 분명하다.아니요?

3) 클래스를 친화력으로 모으는 목적으로만 클래스 그룹화를 했으나 목적 없이 클래스가 협력하지 않는 경우에는 복수형을 사용합니다.

다음은 cmns-definitions(전체 시스템에서 사용되는 열거형)의 예입니다.

또는 약어를 사용하면 문제를 피할 수 있습니다.cmns-def는 인간 독자가 cmns-definitions로 "확장해석"할 수도 있습니다.많은 사람들은 xxxx-utilities를 의미하는 "xxxx-util"도 사용합니다.

세 번째 옵션은 그 자체로 복수형을 의미하는 이름을 사용하여 항목을 하나로 묶는 데 사용할 수 있습니다."api"라는 단어가 떠오르지만 "pack"과 같이 무언가를 복수화하는 모든 단어가 가능합니다.

이러한 경우(3)에 대한 지원은 commons-collections(복수형 사용), commons-dbcp(약어 사용) 또는 commons-lang(약어 사용)과 같은 잘 알려진 모듈과 api를 사용하여 클래스를 선호도에 따라 함께 묶는 모든 것입니다.

아파치에서:
commons-collections -> 가장 중요한 Java 애플리케이션의 개발을 가속화하는 많은 강력한 데이터 구조
commons-lang -> java.lang API용 도우미 유틸리티 호스트
commons-dbcp -> 여러 데이터베이스 연결 풀 패키지

도움이 되었습니까?

해결책

'그냥 이름일 뿐인데...'

나는 오랜 경력을 통해 이러한 단순한 이름이 생산성에 엄청난 차이를 가져올 수 있음을 발견했습니다.사용해도 별 차이 없을 것 같아요 정의, 정의, 또는 데프 일관성을 유지하고 기억하기 쉽고 프로세스를 자동화하는 데 사용할 수 있는 패턴을 이름에 사용하는 한 말입니다.일관된 명명 체계를 기반으로 한 빌드는 임시적이고 식별 가능한 패턴이 없는 "멋진 인간 표시" 이름을 사용하는 빌드보다 작업하기가 훨씬 쉽습니다.

패턴을 사용하면 이름이 짧아지는 경향이 있습니다.이제 이러한 이름으로 작업하는 사람들은 대개 그 이름과 많은 시간을 보냅니다.따라서 가독성은 니모닉 값만큼 중요하지 않습니다.3~4글자의 약어는 놀라울 정도로 강력한 힘을 발휘하는 것으로 나타났다.그 이유 중 하나는 가능한 약어가 하나뿐이고 더 길게 가면 후보가 많기 때문입니다.

어쨌든 가장 중요한 부분은 전반적인 일관성입니다.행운을 빌어요.

다른 팁

definitions (또는 def 또는 definition)은 독자에게 의미가 없기 때문에 나쁜 이름입니다.당신은 객체지향 세계에 살고 있는 것 같습니다. (아마도) 객체지향의 규칙과 원칙을 따르도록 노력하세요.Maven의 모듈은 포함된 가장 큰 "추상화"의 이름을 따서 명명되어야 합니다."정의"는 의미가 아니라 형태이다.

귀하의 질문은 다음과 유사합니다:"어떤 수업 이름이 더 좋나요? FileUtilities 또는 FileUtils".답변:없음.

기본적으로 정의 및 예외로 수행하는 작업은 다른 모듈에 일종의 API를 제공하는 것입니다.그래서 나는 정의와 예외를 결합하고 여기에 인터페이스를 추가할 것을 제안합니다.그렇다면 모두 cmns-api라고 부르는 것이 합리적입니다.나는 일반적으로 단수형 이름이 더 짧기 때문에 선호하지만 이름일 뿐이므로 자유롭게 결정할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top