본문 바로가기

2023년/SSAFY 팀프로젝트

[팀프로젝트] Java 코드 컨벤션

코드 컨벤션

 

가독성이 좋고 관리하기 쉬운 코드를 작성하기 위한 규칙

 

프로젝트 진행 간 목적

  • 좋은 코드는 팀원이 읽었을때 이해가 되고 무엇을 하는지 필요도 없이 이해가 되는 코드
  • 코드를 읽을 때 코드만으로 이해 가능한 부연설명없이 이해되는 코드
  • 코드 작동잘되고 부연설명이 필요없는 상태

코드를 작성하는 방법

  1. 검색이 가능한 이름
    • 좋은 이름은 추상적인 것이 아니다. 
  2. 함수명은 반드시 동사를 사용해라 / 단가지 액션만 해야된다.
    • 함수명을 역할로 정해서 동사로 작성하면 액션 중심으로 이름을 지으면 구분의 필요성을 느끼게 되기도 함
    • 예를들면 유저데이터를 불러오는 함수는  불러오는 역할만 해야됨. 그 외 행동을 한다면 해당 함수로 쪼개야됨
  3. 3개 혹은 그 이하의 인수를 가지는 메소드를 만들어라
    • 많이 가진다면 Object 타입으로 변경해서 다뤄라
  4. boolean 값을 인수로 함수에 보내느것을 최대한 방지하자
    • 함수 내 if else 가 있다는 말이고 추천하는 것은 if else 값을 각각 함수로 쪼개서 나눠 두는게 좋음
    • 함수는 단한개의 액션을 해야된다는 것을 기억하자
  5. 짧은 변수명이나 축약어를 쓰는것을 피하자
    • 예를 들어 u 말고 user 준수
    • userData (x) loadUserData (O)

 

미친모드가 되어서 초기 시점에서 이쁘게 쓰려하지말고 겁나 못생겨도 일단 코드를 작성하고 그 이후에 클린코드로 작성해도 괜찮다.

처음부터 잘 쓰기엔 어렵다. 코딩 하는데 사용한 시간만큼 코딩 대청소 시간도 가졌으면 좋다.

 

 

명명 규칙

  • Java 네이밍 룰
방법 JavaScript & Java 비고
PascalCase 클래스 / Exception  
camelCase 변수 / 함수 / 메소드 lowerCamelCase
  Parameter / 필드 등  
snake_case -  
kebab-case -  
UPPER_CASE 상수변수  

 

 

 

포맷터

포맷터를 사용하여 적용

* 컴퍼스 핵데이 Java 코딩 컨벤션 포맷터 명세 참고

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

 

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

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

naver.github.io

 

적용방법

https://github.com/naver/hackday-conventions-java/tree/master/rule-config

위 링크에서 IDE (IntelliJ 용) XML 포맷터 다운로드 (naver-intellij-formatter.xml)

 

  1. IntelliJ IDEA - File - Settings( Alt + shift + S ) - Editor - Code Style 
  2. Scheme 우측 톱니바퀴 - Import Scheme - IntelliJ IDEA code style XML 클릭
  3. 다운받은 XML 포맷터를 찾아 OK 누르고

코드 스타일 설정 import

 

 

포맷터로 코드 맞추기

  • 윈도우 : Ctrl + Alt + L
  • 맥 : Cmd + Alt + L

 

포맷터 저장 시 코딩 컨벤션 자동 적용 방법

  1. File - Settings - Tools - Actions on Save 
  2. Reformat code ( 저장 시 자동 적용 )
  3. Optimize imports ( 저장 시 사용하지 않는 import 제거 )

 

체크 스타일 적용

Java 소스 코드가 지정된 코드 컨벤션을 준수하는지에 대한 확인을 위한 정적 분석 도구

규칙 어긋나면 알려준다. ( 경고 또는 에러 )

https://github.com/naver/hackday-conventions-java/blob/master/rule-config/naver-checkstyle-rules.xml

  • File - Settings - Plugins - CheckStyle 설치

플러그인 설치

  • 인텔리제이 재시작
  • File - Setting - Tools 
  • Scan scope에서 All sources including tests 설정
  • Treat Checkstyle errors as warnings 체크
  • Configuration File + 버튼을 통해서 xml 파일을 저장하고 Next
  • Naver Checkstyle Rules 의 Active 체크

체크박스 설정

 

 

 

 

 

참고자료

 

https://velog.io/@ozragwort/JAVA-%EC%BD%94%EB%94%A9-%EC%BB%A8%EB%B2%A4%EC%85%98%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C

 

[JAVA] 코딩 컨벤션에 대해서

코딩 컨벤션이 무엇이고, JAVA에서 사용하는 코딩 컨벤션을 정리한 글

velog.io

https://www.youtube.com/watch?v=Jz8Sx1XYb04