문제

클라이언트 라이브러리로 API로 전달되는 "전송 객체"(Getters/Setters가 포함 된 Pojo)가있는이 시나리오가 주어지면 전송 개체의 이름을 지정하는 가장 좋은 방법은 무엇입니까?

package com.x.core; 

public class Car {
        private String make;
        private String model;

        public Car(com.x.clientapi.Car car) {
             this.make = car.getMake();
             this.model = car.getModel();
        }
}

이 예에서는 메인 클래스와 전송 개체 모두 이름이 있습니다. Car. 그것들은 다른 패키지에 있지만 같은 이름을 갖는 것이 혼란 스럽다고 생각합니다. 전송 개체의 이름을 지정하는 방법에 대한 모범 사례가 있습니까?

도움이 되었습니까?

해결책

나는 일반적으로 클래스 이름의 끝에 'dto'를 추가하고 모든 DTO를 자신의 패키지에 배치합니다. 당신의 예에서 나는 그것을 com.x.core.dto.cardto라고 부릅니다.

다른 팁

ATA 랜퍼 영형bject 수업은 다음을 따라야합니다 이름 컨벤션 정의 자바 언어 사양:

클래스 유형의 이름은 각 단어의 첫 글자와 혼합 된 경우에서는 지나치게 길지 않은 명사적인 명사 또는 명사 문구 여야합니다.

ClassLoader
SecurityManager
Thread
Dictionary
BufferedInputStream

[...]


클래스 이름을 접미사합니다 DTO 또는 DTO 실제로 의미가 없으며 수업 자체에 대해 많이 말하지 않습니다. 다음을 설명하는 이름을 고려하십시오 목적 수업의.

다음은 사용할 수있는 이름 제안이 아닌 이름 목록입니다.

  • 어떤 종류의명령
  • 어떤 종류의구성
  • 어떤 종류의신임장
  • 어떤 종류의세부
  • 어떤 종류의요소
  • 어떤 종류의이벤트
  • 어떤 종류의헤더
  • 어떤 종류의입력
  • 어떤 종류의지침
  • 어떤 종류의안건
  • 어떤 종류의메시지
  • 어떤 종류의메타 데이터
  • 어떤 종류의작업
  • 어떤 종류의산출
  • 어떤 종류의유효 탑재량
  • 어떤 종류의투사
  • 어떤 종류의QueryParameter
  • 어떤 종류의QueryResult
  • 어떤 종류의대표
  • 어떤 종류의요구
  • 어떤 종류의자원
  • 어떤 종류의응답
  • 어떤 종류의결과
  • 어떤 종류의
  • 어떤 종류의설정
  • 어떤 종류의사양
  • 어떤 종류의상태
  • 어떤 종류의요약

Note 1: 약어 또는 모든 대문자 단어가 단어로 처리되어야하는지 여부에 관계없이, 나는 그것이 당신에게 달려 있다고 생각합니다. 을 체크하다 Java API 그리고 당신은 우연히 발견 될 것입니다 ZipInputStream / GZIPInputStream. 두 수업 모두에 있습니다 같은 패키지 그리고 이름 컨벤션은 일관성이 없습니다. HttpURLConnection 약어와 일관성을 나타내지 않습니다.

노트 2: 위에 나열된 일부 이름은 이것에서 빌려 왔습니다 기사 작성자가 작성했습니다 리차드 딩 월 (원래 기사는 더 이상 사용할 수없는 것 같습니다. 캐시 된 사본이 있습니다 웹 아카이브에서).

DTO 또는 DAO를 추가하거나 다른 것을 추가하면 건조합니다. FQN은 특히 똑같은 경우 완벽하게 괜찮습니다.

나는 이런 종류의 행동을 보여주는 수업에 대한 모범 사례 나 컨벤션이 있다고 생각하지 않습니다. 나는 개인적으로 어떤 클래스 이름에서도 단어 객체를 좋아하지 않습니다. Poko.car와 같은 일부 자격을 사용하거나 CAR (Pojo) Carda (데이터 액세스 용) Carbiz (비즈니스 도메인 클래스)와 같은 이름 지정 컨벤션을 사용할 수 있습니다.

또는 클래스 이름의 단어 개체를 신경 쓰지 않으면 Cardto (자동차 데이터 전송 객체)와 같은 것을 찾으십시오.

사용중인 다른 코드 규칙에 적합한 컨벤션을 사용하십시오. 나는 개인적으로 접미사 "to"를 사용합니다 (예 : 고객 도메인 클래스와 관련된 데이터 전송 객체의 이름은 Customerto입니다). 또한 패키지 구조는 각 유형의 클래스의 의도를 전달해야합니다 (so.foo.domain.customer 및 so.foo.transport.customerto)

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