Java 클래스 버전 별 명명 규칙


10

두 소프트웨어 사이의 어댑터를 만들어야합니다 (기계 시뮬레이션, 비 CS). 라는 클래스가 있다고 가정합니다 ThatThing. 다양한 공급 업체별 구현을 처리해야합니다. 이 버전에는 의미있는 이름이 없습니다 (일식 헬리오스, 인디고 등).

1. 버전 번호를 표현할 클래스의 이름을 어떻게 지정해야합니까?

내가 좋아하는 클래스 찾기 ThatThing_3_6_Impl, ThatThing_3_7_Impl매우 어색합니다.

답변:


20

다른 패키지 이름을 사용하십시오.

com.example.version36.ThatThing
com.example.version37.ThatThing

이를 통해 특정 버전에 대한 모든 "사물"을 함께 유지할 수 있습니다.

Apache Commons Lang은 "버전 3"재 작성을 릴리스 할 때이 형식을 사용했습니다.


단일 클래스에서 두 버전을 모두 참조 할 수 있어야하므로 이름을 다음과 같이 줄입니다.

ThatThing36
ThatThing37

귀하의 경우에는,이 설명이 충분 것, 그것은 추악한 제거 Impl및 _'들.


잘 들립니다. 나는 그것에 대해 생각합니다. 이 버전들이 합쳐진 곳에서 참조 용으로 정규화 된 이름을 사용해야합니까?
— user802421

그들은 어떻게 모입니까? 의존성 주입을 사용하고 있습니까? 어느 쪽이든, 당신에게 질문에 대답하기 위해, 그렇습니다.
— Jeremy Heiler

릴리스간에 변경되는 여러 버전의 데이터 모델이 있습니다. 기능의 일부 특정 하위 집합이 혼합되어 있습니다. 라이브러리 지원이 전혀 없습니다 (예 : di, codegen 없음). 이것은 11 년의 소프트웨어 진화의 역사입니다. (.
— user802421

슬퍼. 그것은 필요에 의한 것이 가능 version37.ThatThing확장하는 version36.ThatThing고통의 일부를 완화 것?
— Jeremy Heiler

불행히도 그것들은 구조적으로 다르며 복잡한 변환이 필요합니다. 비트 맵 및 벡터 그래픽과 같습니다.
— user802421

2

중요하지 않습니다. 표현하고 고수하는 데 필요한 모든 것을 표현하는 규칙을 선택하십시오.

ThatThing3_6"That Thing 3.6"에 사용할 수 있습니다 .

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