HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
👩‍👩‍👦‍👦
[팀01] 김팽박이
/
🏆
코딩 컨벤션
코딩 컨벤션
🏆

코딩 컨벤션


인덱스
기본 코드 스타일네이버 코드 스타일, 소나 린트팀 컨벤션CodeStyleToStringEqualsAndHashstatic importClass NamingMethodNaming롬복로그TRACEDEBUGINFOWARNERRORDTOMapper / ConverterDTO 레이어 변환예외BusinessException스택 트레이스줄바꿈

기본 코드 스타일

네이버 코드 스타일, 소나 린트

SonarLint | Free and Open Source Code Quality & Security IDE Extension
SonarLint is a and Open Source IDE extension that identifies and helps you fix quality and security issues as you code. Like a spell checker, SonarLint squiggles flaws and provides real-time feedback and clear remediation guidance to deliver clean code from the get-go.
SonarLint | Free and Open Source Code Quality & Security IDE Extension
https://www.sonarlint.org/
SonarLint | Free and Open Source Code Quality & Security IDE Extension
IntelliJ 설정 : 디폴트 코드 스타일 변경, CheckStyle 적용 - MacOS, Java
https://naver.github.io/hackday-conventions-java/#checkstyle https://hodol.dev/journal/coding-convention/ 두 블로그의 글이 도움이 많이 되었다. 우테코 과제를 진행하면서 자바 코드 컨벤션에 대해 알게 되었다. 첫 번째 블로그에서 자바 코드 컨벤션의 규칙을 설명해주는데 이걸 자동으로 검사해주는 tool이 있다. 나는 그것도 모르고 하나하나 코드 규칙을 읽어가면서 내가 직접 양식을 맞춰줬다. 밑으로 내려가니까 이런 스타일 검사하는 툴이 있더라...
IntelliJ 설정 : 디폴트 코드 스타일 변경, CheckStyle 적용 - MacOS, Java
https://iamtaehoon.tistory.com/191
IntelliJ 설정 : 디폴트 코드 스타일 변경, CheckStyle 적용 - MacOS, Java

팀 컨벤션

CodeStyle

ToString

  • 모든 엔티티, 값객체는 ToString 을 정의한다.
 

EqualsAndHash

  • 필
 

static import

  • static 메서드를 사용할 때 클래스를 생략하지 않는다. ex) Assertions.assertThat()
    • → 테스트 코드는 예외 하기로~
 

Class Naming

  • Controller 클래스명에 Rest 를 구분한다. → ex) MemberRestController.class
  • 설정 클래스명은 ~Config 로 통일한다. → ex) WebMvcConfig.class
 

MethodNaming

  • 컨트롤러 레이어를 제외한 테스드 메소드명은 test 로 시작한다. → ex) testSaveMember()
  • 컨트롤러 레이어 테스트는 문서화 네이밍을 통일하기 위해서 HttpMethod 단위를 사용한다. → ex) getMember(), postMember()

롬복

@Getter, @NoArgsConstructor, @RequiredArgsConstructor, @Builder 만 사용한다.
나머지 롬복 애노테이션은 설정을 통해서 사용하지 못하도록 막는다.
 

로그

TRACE

  • 테스트 환경에서 SQL 파라미터 값을 확인하기 위해 사용한다.
 

DEBUG

  • SQL 을 확인하기 위해 사용한다.
 

INFO

  • 비지니스 예외, Validation 을 위반하는 경우 등 전반적인 예외 상황에서 사용한다.
 

WARN

  • Warn 레벨은 일단 사용을 보류한다.
 

ERROR

  • 예상하지 못한 예외 가 발생한 경우 사용한다.
  • 배포 환경에서 Sentry 로 로그를 관리한다.
 

DTO

Mapper / Converter

  • 컨트롤러 레이어에서는 ~Mapper, 서비스 레이어에서는 ~Converter 로 각 레이어에 맞는 DTO 로 변환을 한다.
  • 모든 변환 메서드는 static 메서드를 사용한다.
  • 메서드명은 to + 변환할 객체클래스명 규칙을 따른다.
 

DTO 레이어 변환

  • 클라이언트 → 컨트롤러
    • ~Request 객체로 클라이언트의 요청 데이터를 받는다.
  • 컨트롤러 → 서비스
    • ~Dto 객체로 변환해서 보낸다.
  • 서비스 → 컨트롤러
    • 엔티티, ~Response 어떠한 것을 보내도 상관없다. 하지만 가능하다면 ~Response 객체를 보낸다.
  • 컨트롤러 → 클라이언트
    • ~Response 객체로 응답을 보낸다.
 

예외

BusinessException

spring-guide/exception-guide.md at master · cheese10yun/spring-guide
스프링은 예외처리를 위해 다양하고 막강한 어노테이션을 제공하고 있습니다. 일관성 있는 코드 스타일을 유지하면서 Exception을 처리하는 방법에 대해서 소개하겠습니다. Error Response 객체는 항상 동일한 Error Response를 가져야 합니다. 그렇지 않으면 클라이언트에서 예외 처리를 항상 동일한 로직으로 처리하기 어렵습니다. Error Response 객체를 유연하게 처리하기 위해서 간혹 Map 형식으로 처리하는데 이는 좋지 않다고 생각합니다.
spring-guide/exception-guide.md at master · cheese10yun/spring-guide
https://github.com/cheese10yun/spring-guide/blob/master/docs/exception-guide.md
spring-guide/exception-guide.md at master · cheese10yun/spring-guide
  • BusinessException 이라는 커스텀 예외를 만들어서 예외 처리를 진행한다.
  • BusinessException 은 주로 400번 대 예외 처리를 할 때 사용된다.
  • BusinessException 은 ErrorCode 필드를 가진다.
  • 커스텀 예외가 많아지지 않도록 하기 위해서 BusinessException 을 상속받고, 함수 메서드로 처리한다.
 

스택 트레이스

  • 예외 처리를 하게될 경우 디버깅을 편하게 할 수 있도록 예외 스택 트레이스를 꼭 남긴다.
try { System.out.println("Hello World"); } catch (Exception ex) { throw new Exception("message", ex); }
 

줄바꿈

  • 클래스와 첫 필드 사이에 한 줄을 꼭 비운다.
  • 필드 사이에 애노테이션이 붙을 경우에는 필드 사이에 한 줄을 꼭 비운다.
  • return 을 하기 전에 한 줄을 꼭 비운다.
  • 비슷한 성격의 작업을 마치고 나면 한 줄을 꼭 비운다.
  • DTO 객체는 네이버 체크스타일을 따르지 않고 한 줄씩 띄우기로한다.