-
IntelliJ IDEA: 잘못된 의존을 찾기 위한 옵션(w/layered architecture)IntelliJ IDEA 2022. 9. 30. 21:01
팀프로젝트를 진행하다가 갑자기 포스팅 아이디어가 떠올라서 급히 적어보는 글입니다.
위에 말한 팀프로젝트에서 다음주에 코드리뷰를 진행하기로 했어요. 그래서 피드백을 드릴만한 부분을 이것저것 준비하고 있는데요(제 코가 석자이지만 팀장이기 때문에...🥲). 그러려면 당연하게도 코드를 읽어야겠죠.
코드를 많이, 계속 읽다보니까 코드리뷰를 위한 요령이 조금 생겨서 공유해보려고 합니다.
💁♂️알려드리려는 옵션
인텔리제이 설정창 >>
왼쪽 메뉴에서 'Editor' 클릭 >>
오른쪽 패널에서 'Code Style' 클릭 >>
왼쪽 메뉴를 보면 현재 토글메뉴 'Code Style'에 커서가 가있을 건데, 토글을 눌러서 펼쳐준다 >>
토글 메뉴에서 'Java' 선택 >>
'Imports' 탭 선택 >>
오른쪽 패널 아래쪽에 있는 Class count to use import with '*'와 Names count to use static import with '*'의 값을 충분히 크게 늘려주기(예: 100)
🤔어떤 옵션이냐면
인텔리제이는 한 패키지에 대한 import 문이 많아지다보면 *로 바꿔주는데요. 이것을 자동으로 바꾸지 않도록 하는 옵션입니다. 예를 들어 Arrays, List, Map과 같은 객체들을 import 하다보면 `import java.util.*`이라고 바꿔주는 옵션인거죠.
😤그걸 왜 꺼요
'바꾸면 코드가 깔끔해지는데 왜 옵션을 끄래?!' 라고 말할 수도 있겠지만, 오늘의 이야기의 주제는 코드 리뷰였으니까요.
코드가 어떻게 동작하는지 보기 위해서 `public class SomeClass { ... `부터 볼 수도 있겠죠. 코드 패턴이라든지 사용하지 말아야 할 타입, 변수명 같은 것들을 확인할 수도 있을 거에요.
하지만 해당 클래스에서 어떤 기능과 동작을 하는지 파악하기 위해서는 사실 import문 부분만 봐도 대강 알 수 있습니다!
패키지 디자인에 전혀 신경을 쓰지 않았다면 모를까(예: 모든 클래스를 한 패키지에 다 때려넣기...), 최소한 계층형 구조를 지키려고 시도라도 해봤다면 import문을 살펴보는 것은 해당 클래스를 파악하기 매우 유용해요.
예를 들면 이런 것들입니다.
- Service 클래스에서 Controller를 참조하고 있지는 않은지? (계층 간 의존방향 역주행)
- 전혀 다른 도메인의 Repository를 마구잡이로 들여오고 있지는 않은지? (도메인 결합도 상승)
- Entity 클래스에 `import lombok.Setter;` (엔티티 클래스의 상태에 관심을 기울였는지)
- 예를 들어 Stream과 같은 클래스를 사용중인데, 해당 클래스에서 Stream의 기능을 사용할 일이 없다. (비효율적인 방식의 문제 접근이 있었는지 추정해볼 수 있다, 때로는 오버 테크를 의미하기도 한다)
- 안 쓰는 import를 제거하지 않고 내버려두는지? (방 청소 좀 해라)
🤗마무리
좋은 품질의 코드란 뭘까 궁금하기도 하고 생각을 자주 하는데요.
스스로의 코드를 보면서도 만족스러운 품질의 코드라고 생각하진 못하지만, 그래도 꾸준히 노력해야 아주 조금씩, 눈에 띄지 않게 조금씩 발전해나갈 수 있는 부분이라고 생각해요.
아참, 참고로 위의 옵션을 적용하더라도 이미 *로 표시된 import문은 그대로 두기 때문에 처음에 프로젝트 컨벤션을 정할 때에 합의해두어야 쉽게 적용할 수 있겠습니다.
저는 이번에 코드리뷰를 준비하면서 이 옵션을 발견했기 때문에 일일히 import문을 지워주고 있어요😅
하지만 다음 프로젝트 때에는 처음부터 적용해볼 의향도 있습니다! 물론 팀원들이 반겨야겠지만요😃
제가 위에 설명드린 예시 외에도 많은 '힌트'들을 얻으실 수 있을 거란 생각이 들어요. 직접 사용해보시고 주변에 공유하는 것도 좋겠죠!
'IntelliJ IDEA' 카테고리의 다른 글
IntelliJ IDEA: 구글 스타일 포맷팅 간단하게 적용하기 (2) 2022.10.07 IntelliJ: 코드 자동 완성(Live Template) 완벽하게 사용하기(w/Auto import) (0) 2022.06.15 IntelliJ IDEA: gradle 버전 변경하기 (0) 2022.06.14 IntelliJ: "JDK is missing" 오류 (0) 2022.05.14 인텔리제이(IntelliJ IDEA)가 갑자기 안 켜질 때: Internal Error. ... (0) 2022.05.13 IntelliJ IDEA 윈도우 단축키 Cheatsheet (2) 2022.04.23