프로젝트를 시작하면서 팀원들과의 코드양식을 맞추기 위해 코드 컨벤션에 대해 알아보았다. 프론트엔드, 백엔드마다 유행하는 코드 컨벤션이 다 다르고 각각의 특징에 따라서 사용한다.
Code Convention 코드 컨벤션
프로그래밍에서 특정 언어나 프레임워크를 사용할 때 일관된 형식과 스타일을 유지하기 위한 규칙
1. 들여쓰기 및 공백 사용
2. 변수 및 함수 명명 규칙
3. 주석 사용 규칙
4. 코드 구조 규칙
코드 컨벤션을 쓰는 이유
1. 가독성 향상
일관된 코드 스타일과 형식은 코드를 읽고 이해하기 쉬운 가독성 높은 코드를 만든다. 이어서 가독성이 높은 코드는 버그를 찾기 쉽고 유지보수가 용이해진다.
2. 협업의 향상
여러 개발자가 협업하는 경우, 일관된 코드 컨벤션을 따르면 개발자들 간의 의사소통이 원활해지고 팀 프로젝트의 일관성을 유지할 수 있다.
3. 유지보수 용이성
코드가 일관되고 규칙에 따라 작성되면, 나중에 코드를 수정하거나 새로운 기능을 추가할 때 오류를 줄이고 효율적으로 작업할 수 있다.
4. 품질 향상
일관된 스타일은 개발자가 코드 리뷰를 할 때 놓치기 쉬운 오류나 개선 사항을 쉽게 찾을 수 있게 도와준다.
5. 플러그인 지원
많은 프로그래밍 언어에는 코드 스타일을 자동으로 검사하고 포맷팅하는 플러그인이 있다. 이러한 플러그인을 사용하면 코드 컨벤션을 쉽게 반영할 수 있다.
6. 코드의 일관성
코드 컨벤션을 따르면 프로젝트 내에서 일관된 코드 스타일을 유지할 수 있어 프로젝트 전체의 일관성을 유지하고 코드베이스를 관리하기 쉽게 만든다.
7. 새로운 개발자의 통합
팀 내에서 일관된 스타일을 공유하면 새로운 협업 개발자가 빠르게 프로젝트에 참여할 수 있다.
Naver Code Convention 사용한 이유 + Naver vs Google
네이버 코드 컨벤션을 사용한 이유는 국내 회사의 코드 컨벤션으로 기능에 대한 원활한 해석을 위해 선택했다. 네이버 코드 컨벤션과 구글 코드 컨벤션 중 네이버 코드 컨벤션을 선택한 이유는 두 컨벤션의 큰 차이점인 TapSpace와 LineLength가 더 크기 때문이다.
1. TapSpace
Naver
탭의 크기는 4개의 스페이스
[4-spaces-tab]
1개의 탭의 크기는 스페이스 4개와 같도록 에디터에서 설정한다.
Block indentation: +2 spaces
Each time a new block or block-like construct is opened, the indent increases by two spaces. When the block ends, the indent returns to the previous indent level. The indent level applies to both code and comments throughout the block. (See the example in Section 4.1.2, Nonempty blocks: K & R Style.)
2. LineLength
Naver
최대 줄 너비는 120
[line-length-120]
최대 줄 사용 너비는 120자까지 가능하다.
Column limit: 100
Java code has a column limit of 100 characters. A "character" means any Unicode code point. Except as noted below, any line that would exceed this limit must be line-wrapped, as explained in Section 4.5, Line-wrapping.
Reference
Naver Code Convention reference
https://github.com/naver/hackday-conventions-java/blob/master/rule-config/naver-checkstyle-rules.xml
Google Code Convention reference
https://github.com/checkstyle/checkstyle/tree/master/src/main/resources
'JAVA' 카테고리의 다른 글
[JAVA/자바] 소수점 출력 (0) | 2024.02.25 |
---|---|
[JAVA/자바] 실행시간 확인 (0) | 2023.10.03 |
[JAVA/자바] 메모리 사용량 확인 (0) | 2023.10.03 |
[JAVA/자바] Comparable과 Comparator (0) | 2023.09.26 |
[JAVA/자바] 자바 입출력 (0) | 2023.08.10 |