이 글은 내가 우아한테크캠프에서 배웠던 내용들을 복습하기 위해 진행하는 토이프로젝트(https://github.com/minseokLim/woowahan-tech-camp-review)를 중심으로 작성되었다.

 

1. Checkstyle

 Checkstyle은 코딩 컨벤션 검사를 위한 도구이다. 자동화된 검사가 가능하며, 설정에 따라 규칙에 어긋나는 코드가 하나라도 있을 경우 빌드가 실패하도록 만들 수도 있다. 사용법은 https://naver.github.io/hackday-conventions-java/#checkstyle 을 참고하면 확인할 수 있다.

 코딩 컨벤션은 기본적으로 https://naver.github.io/hackday-conventions-java 을 따르되 약간의 커스터마이징을 하였다. 커스터마이징 사항은 아래와 같다.

1) 대문자로 표기할 약어를 허용하지 않는다. 즉 DAO와 같은 예외 케이스를 두지 않았다.

2) 메서드명에 한글을 허용하였다. 이는 테스트 코드 작성 시 메서드명을 한글로 만들기 위함이며, 프로덕션 코드에는 허용되지 않는다.

3) 인덴트로 하드탭이 아닌 4 spaces를 사용한다.

4) 줄바꿈줄 바꿈 허용 위치 중 '+' 기호에 한해서만 예외적으로 연산자 후에도 줄 바꿈이 가능하도록 하였다. 이는 IDE가 자동으로 생성해주는 toString() 함수를 매번 수정해주는 것이 너무 불편했기 때문이다.

5) import문 순서에 대한 규칙 중, nhncorp, naver와 같은 네이버 전용 패키지는 배제하였다. 대신 토이프로젝트 어플리케이션 코드에서 사용하는 minseoklim 패키지가 import문 중 가장 마지막에 위치하도록 하였다.

 

2. Lombok

 롬복은 어노테이션을 통해 반복적인 코드를 자동으로 생성해주는 도구이다. 이를 활용하면 코드를 더 깔끔하게 유지할 수 있다는 장점이 있다. 하지만 편의성만큼이나 단점도 존재한다. 따라서 주의해서 사용해야 하며 때에 따라서는 아예 사용을 금지하는 편이 좋은 것도 있다. 이에 대해서는 https://kwonnam.pe.kr/wiki/java/lombok/pitfall 에 잘 정리되어 있다. 

 lombok.config을 사용하면 특정 롬복 어노테이션 사용 시 오류가 발생하도록 하여 사용을 못하게 강제할 수 있다. 사용법은 간단하다. 프로젝트 최상단에 아래와 같이 lombok.config 파일을 생성한다.

 이후 lombok.config 파일 안에 아래와 같이 사용을 금지할 어노테이션을 지정해주면 된다.

lombok.allArgsConstructor.flagUsage = error
lombok.requiredArgsConstructor.flagUsage = error
lombok.data.flagUsage = error
lombok.value.flagUsage = error
lombok.experimental.flagUsage = error
lombok.toString.flagUsage = error

 

 @EqualsAndHashCode의 경우 불변 객체에 대해서만 사용해줘야 하는데, 사실 이건 롬복의 문제라기 보단 불변 객체에 대해서만 equals()와 hashcode()를 재정의해주는 편이 좋다는 것이다.

 

※ 참고

https://naver.github.io/hackday-conventions-java

 

캠퍼스 핵데이 Java 코딩 컨벤션

중괄호({,}) 는 클래스, 메서드, 제어문의 블럭을 구분한다. 5.1. K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호

naver.github.io

https://kwonnam.pe.kr/wiki/java/lombok/pitfall

 

java:lombok:pitfall [권남]

 

kwonnam.pe.kr

 

+ Recent posts