JAVA - 코딩컨벤션 정리
이 글을 작성하는 이유는 요즘 여러 언어를 사용하다보니 코딩컨벤션이 언어에 따라서도 어느정도 차이가 있기도 하고 같이 일하는 사람과도 차이가 있다보니 혼동이 생겨 이참에 확실히 짚고 넘어가자는 의미로 정리하게 되었다. 부족한 내용들이나 추후에 알게되는 내용들이 있다면 업데이트해나갈 예정이다.
코딩컨벤션?
간단히 설명하면 나 외에 다른 사람들도 내가 작성한 코드를 보고 쉽고 빠르게 이해할 수 있도록 하나의 작성 표준이라고 생각하면 된다.
하지만 표준에 안맞는다고 오류가 생기거나 하지는 않지만 각 언어나 프로그램마다 코딩컨벤션이라는 것이 존재하며 이 컨벤션을 지킬때 작업의 효율이 증가하게 된다.
혼자서 코딩을 하고 혼자만 볼 것이라면 어떻게 짜든 상관이 없지만 내가 짠 코드를 다른사람이 봐야하거나 아니면 입장을 바꿔서 다른사람이 짠 코드를 내가 볼 경우 이러한 컨벤션을 지켜주는 것이 원활한 소통의 길을 만들어준다.
기본사항
간격, 공백, 들여쓰기, 줄맞춤 필수!!!
Naming
- 기본적으로 네이밍은 누구나 알 수 있는 쉬운 단어를 선택
- 변수는 카멜케이스 -> userName
- 패키지명은 단어가 달라지더라도 무조건 소문자만 사용 -> userName (X) , username(O)
- ENUM이나 상수는 대문자로 -> USERNAME
- 함수명은 시작은 소문자로 시작하고 동사로 네이밍, 단어가 달라진다면 카멜케이스 형식 -> getNameById()
- 클래스명은 명사로 작성, 카멜케이스 -> UserService
- 객체 이름을 함수 이름에 중복해서 넣지 않는다. ( = 상위 이름을 하위 이름에 중복시키지 않음 ) -> line.getLength() (O), line.getLineLength() (X)
- 의도가 드러난다면 되도록 짧은 이름을 선택한다 (하지만 과도한 축약으로 의도가 제대로 전달되지 않는다면 축약형보다는 서술형형식을 취한다. 의미를 들어내기에 길어야한다면 긴쪽을 선택하는 것이 맞음.)
structure
- 패키지는 목적별로 묶는다.
- 하나의 메소드와 클래스는 하나의 목적을 두게 만든다 (한가지 일만 하도록)
programming
- 반복되는 코드를 작성하지 않는다. ( 테스트 코드는 예외)
- 변수는 최대한 사용하는 위치에 가깝게 선언
- 코드의 길이를 줄이는 것도 좋지만 가독성이 떨어진다면 풀어쓰는 것도 하나의 방법이다. (제 3자 입장에서 봐도 의미전달에 문제가 없는 정도로..)
- 모든 예외는 무시하지 말고 처리한다. 예외 처리를 하지 않는 경우는 주석으로 남겨준다.
- 예외를 던질때 최대한 세부적인 Exception을 던진다 (상위 타입(Throwable, Exception)말고 세부적인 Exception을 던짐 -> 예외만 보고도 어떤 예외를 처리했는지 파악 가능.)
- 조건문에 부정조건을 넣는 것을 피한다.