Skip to content

BE 코딩 컨벤션

이성준 edited this page Nov 14, 2022 · 2 revisions

자바 코딩 컨벤션

[캠퍼스 핵데이 Java 코딩 컨벤션](https://naver.github.io/hackday-conventions-java/#1-var-per-declaration)

공통

  • 어노테이션은 길이가 짧은순으로, 길이가 같으면 중요도가 높은 순으로,

도메인 객체

  • 도메인의 기본생성자의 접근지시자는 Protected로 사용하기
  • Builder는 생성자레벨에서 사용하기
  • Setter 지양하기
  • @Column : 컬럼 네임도 클래스 네임과 마찬가지로 반드시 지정하기
  • nullableuniqueupdatable 등의 기능을 적극 활용하기, 이메일일 경우 nullableunique 같은 속성을 반드시 추가하기

ex)

@Entity
@Getter
@Table(name = "member")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Member {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", updatable = false)
    private Long id;

		@Column(name = "email", nullable = false, unique = true, updatable = false, length = 50)
		private String email;

    @Builder
    public Member(String email) {
        this.email = email;
    }
 
}

컨트롤러

  • ResponseEntity사용시 빌더형식으로 사용하자

ex)

@GetMapping("/questions/{id}")
public ResponseEntity<DetailQuestionResponse> get(@PathVariable Long id) {

   return ResponseEntity.ok(questionService.get(id));
}
  • DTO 변환시 빌더패턴으로
  • DTO 생성시 요청 일때 **request, 응답일때 **response

서비스

  • DTOEntity 변환은 서비스 계층에서 하기
  • Method 는 CRUD 순서로
  • 서비스가 단일책임원칙을 잘 지키고 있는지 확인하고 아니다 싶으면 분리한다.
    • 도메인 관련 기능을 세분화하여 Service를 만든다(ex. OrderRegisterService, OrderStatusService .....)
  • 조회만 한다면 @Transaction(readOnly = true) 꼭 붙이기

예외

  • 예외 이름은 Exception으로 끝내기

ex) emailDuplicateException