Skip to content

코딩 스타일 정의

Photogrammer edited this page Aug 30, 2024 · 12 revisions

코딩 스타일

일반

  • 누가 봐도 읽을 수 있게 변수명을 정해야합니다.
    • 리뷰 과정에서 해당 변수명에 대한 이해가 되지 않는다면 반드시 지적해야합니다.
  • for (i) 보다는 foreach(향상된 for, ex: for (Integer number : numbers) {})를 최대한 활용합니다.
    • 가독성 높은 코드를 지향하기 때문입니다.
    • 특별한 이유가 없다면 가독성을 위해 foreach 를 사용합니다.
  • ENUM → 상수는 항상 대문자 스네이크를 활용합니다.
  • naming 이 모호할 경우 IntelliJ 의 추천 naming (class 이름 기반)을 활용합니다.

DTO

  • DTO 는 특별한 경우가 아닌 경우, Record 를 사용합니다.
  • 요청 DTO
    • *ReqDto
  • 응답 DTO
    • *RespDto
  • 요청 / 응답 DTO
    • Swagger 에서 OPEN API SPEC 을 작성할 수 있도록 @NotNull, 스키마 표시 어노테이션을 명시합니다.
  • 서비스 레이어간 DTO
    • *Dto
  • DTO -> Entity 변환 : public Entity toEntity(Dto)정의
  • Object -> DTO 변환 : public static Dto of(Entity) 정의
  • Object -> DTO 간 변환이 필요할 경우 위의 방법을 모두 따릅니다.

Setter

  • Lombok 사용 가이드에 나와있듯, Setter 의 사용에 주의합니다. class 단에서의 Setter 사용을 금지합니다.
  • Setter 는 객체 내의 mutable / immutable 한 field 를 명확하게 드러내는 요소로 사용해야하며, 검증 로직이 필요한 경우 추가를 해야합니다.

Builder

  • field 가 많은 객체의 경우 Builder를 사용할 수 있습니다.
  • Immutable 한 객체를 생성할 경우에 주로 사용하도록 해야합니다.
  • field 의 변경이 일어나는 경우 정적으로 builder 는 오류를 파악할 수 없습니다. 따라서, 이를 주의해야합니다.

Test

  • 테스트는 가능한 "동작에 대한 정의"를 이해할 수 있도록 작성해야합니다.
    • 비즈니스 로직을 반영하는 서비스 / 클래스에 대해서 검증 테스트를 작성합니다.

final keyword

  • local variable 에 대해서는 final keyword 를 지양한다. (특별한 이유가 있을 경우에만)
  • 불변성을 띄는 field 의 경우 반드시 final 을 지정한다.