코드 컨벤션
가독성이 좋고 관리하기 쉬운 코드를 작성하기 위한 규칙
프로젝트 진행 간 목적
- 좋은 코드는 팀원이 읽었을때 이해가 되고 무엇을 하는지 필요도 없이 이해가 되는 코드
- 코드를 읽을 때 코드만으로 이해 가능한 부연설명없이 이해되는 코드
- 코드 작동잘되고 부연설명이 필요없는 상태
코드를 작성하는 방법
- 검색이 가능한 이름
- 좋은 이름은 추상적인 것이 아니다.
- 함수명은 반드시 동사를 사용해라 / 단가지 액션만 해야된다.
- 함수명을 역할로 정해서 동사로 작성하면 액션 중심으로 이름을 지으면 구분의 필요성을 느끼게 되기도 함
- 예를들면 유저데이터를 불러오는 함수는 불러오는 역할만 해야됨. 그 외 행동을 한다면 해당 함수로 쪼개야됨
- 3개 혹은 그 이하의 인수를 가지는 메소드를 만들어라
- 많이 가진다면 Object 타입으로 변경해서 다뤄라
- boolean 값을 인수로 함수에 보내느것을 최대한 방지하자
- 함수 내 if else 가 있다는 말이고 추천하는 것은 if else 값을 각각 함수로 쪼개서 나눠 두는게 좋음
- 함수는 단한개의 액션을 해야된다는 것을 기억하자
- 짧은 변수명이나 축약어를 쓰는것을 피하자
- 예를 들어 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)
- IntelliJ IDEA - File - Settings( Alt + shift + S ) - Editor - Code Style
- Scheme 우측 톱니바퀴 - Import Scheme - IntelliJ IDEA code style XML 클릭
- 다운받은 XML 포맷터를 찾아 OK 누르고
포맷터로 코드 맞추기
- 윈도우 : Ctrl + Alt + L
- 맥 : Cmd + Alt + L
포맷터 저장 시 코딩 컨벤션 자동 적용 방법
- File - Settings - Tools - Actions on Save
- Reformat code ( 저장 시 자동 적용 )
- 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 체크
참고자료
[JAVA] 코딩 컨벤션에 대해서
코딩 컨벤션이 무엇이고, JAVA에서 사용하는 코딩 컨벤션을 정리한 글
velog.io
https://www.youtube.com/watch?v=Jz8Sx1XYb04