반응형
📄 코딩 컨벤션 문서
네이버 : https://naver.github.io/hackday-conventions-java/
구글(번역본) : https://github.com/JunHoPark93/google-java-styleguide
구글(원본) : https://google.github.io/styleguide/javaguide.html
🤔 두 스타일 가이드 중 어떤 것이 프로젝트에서 더 적합할지 판단하려면?
크게 아래의 기준에 따라 갈릴 수 있겠습니다.
1. 팀의 경험과 기술 스택
- 팀원들의 경험 : 팀이 이미 특정한 스타일 가이드에 익숙하다면, 그 가이드를 따르는 것이 효율적입니다.
- 기술 스택 : 프로젝트에서 사용되는 기술과 라이브러리에 따라 특정 가이드가 더 잘 맞을 수 있습니다.
2. 프로젝트의 성격
- 오픈 소스 여부 : 프로젝트가 오픈 소스일 경우, 널리 사용되는 구글 스타일 가이드가 더 적합할 수 있습니다. 이는 더 많은 외부 기여자들이 코드를 쉽게 이해하고 기여할 수 있도록 합니다.
- 내부 프로젝트 : 내부 프로젝트라면, 조직의 기존 스타일 가이드(ex. 네이버)를 따르는 것이 좋습니다. 이는 일관성을 유지하고, 조직 내에서 코드 리뷰와 협업을 더 효율적으로 할 수 있게 합니다.
3. 국제화/다국어 지원
- 글로벌 프로젝트: 영어로 주석을 작성해야 하는 글로벌 프로젝트라면 구글 가이드를 따르는 것이 자연스럽습니다.
- 로컬 프로젝트: 한국어를 주로 사용하는 로컬 프로젝트라면, 네이버 스타일 가이드의 한글 주석 허용이 유리할 수 있습니다.
🧐 상세한 비교
1. 클래스와 인터페이스 이름
<공통점>
- CamelCase 를 사용합니다.
<차이점>
- 네이버
- 약어는 가능하면 지양합니다.
- 구글
- 약어 사용에 대해 특별히 언급하지 않습니다. 그러나 가능하면 직관적인 이름을 선호합니다.
2. 변수 이름
<공통점>
- lowerCamelCase 를 사용합니다.
<차이점>
- 네이버
- 약어를 피하고 명확한 이름을 사용합니다.
- 구글
- 명확하고 직관적인 이름을 선호합니다. 단, 더 짧은 변수 이름도 허용하는 경향이 있습니다.
3. 상수 이름
<공통점>
- 대문자와 언더스코어를 사용하여 UPPER_SNAKE_CASE로 작성합니다.
4. 주석 스타일
<차이점>
- 네이버
- Javadoc 주석을 사용하는 경우, 모든 메서드에 대해 명시적으로 주석을 달 것을 권장합니다.
- 주석은 한글을 사용해도 됩니다.
- 구글
- Javadoc 주석은 필수로 사용하며, 특히 공공 API의 경우 반드시 사용해야 합니다.
- 주석은 영어로 작성하는 것이 원칙입니다.
5. 들여쓰기와 줄바꿈
<차이점>
- 네이버
- 들여쓰기는 공백 4칸을 권장합니다.
- 줄 길이는 120자로 제한합니다.
- 구글
- 들여쓰기는 공백 2칸을 권장합니다.
- 줄 길이는 100자로 제한합니다.
6. import 순서
<공통점>
- 표준 라이브러리, 서드 파티 라이브러리, 그리고 프로젝트 내 라이브러리 순으로 나눠서 import합니다.
<차이점>
- 구글
- 네이버와 동일한 방식이지만, 그룹 간에 한 줄씩 띄워 구분하며, import는 알파벳 순으로 정렬합니다.
7. 라인 브레이크와 가로 스크롤
<차이점>
- 네이버
- 줄 길이를 넘기는 경우 라인 브레이크를 적극적으로 사용하여 가독성을 높입니다.
- 구글
- 줄 길이를 넘기지 않도록 코드를 작성하는 것을 권장하며, 반드시 넘기는 경우, 적절한 위치에서 줄을 나눕니다.
8. 기타
- 네이버
- 한글 주석을 허용합니다.
- 한국 개발자들이 주로 사용하는 IDE 설정에 맞춘 부분이 많습니다.
- 구글
- 전 세계 개발자들이 사용할 수 있도록 영어와 국제적인 관습을 따르는 경우가 많습니다.
반응형
'기타' 카테고리의 다른 글
코딩테스트를 위한 Python3 정리 (2) | 2024.10.15 |
---|---|
[IntelliJ] Java 프로젝트 코딩 컨벤션 적용하기 (0) | 2024.08.21 |
모놀리식 아키텍처(MA) vs 마이크로서비스 아키텍처(MSA) (2) | 2024.05.16 |
[AWS] IAM (Identity and Access Management) (0) | 2024.05.10 |
[Gradle] build.gradle dependencies import keywords (0) | 2024.04.30 |