코딩 컨벤션이 중요한 이유
- 일관된 형식과 스타일을 유지하게 해주어 가독성이 향상되고, 개발 생산성이 증가합니다.
- 코드는 시간이 지남에 따라 변경되고 확장되기 마련입니다. 일관된 코드 스타일을 유지하면 다른 개발자가 코드를 수정하거나 업데이트 하는 경우 쉽게 접근 할 수 있습니다.
어느 컨벤션에 따라야 할까?
코딩 컨벤션은 사실 정답이 정해져 있는 것이 아니며, 기업마다 다르고 심지어 팀 단위로도 다르기도 한다. 따라서 사람들이 많이 사용하는 코딩 컨벤션인 구글의 코딩 컨벤션을 적용해보기로 하였으며,일관성을 유지하는 것이 중요합니다.
자바에서 쉽게 코딩 컨벤션을 적용하는 방법
대부분의 IDE에서는 Auto Formatting을 지원하고 있습니다.
vscode에서 eslint와 prettier를 사용하듯 자바를 사용할 때 주로 사용하는 IDE인 Eclipse와 Intellij에서도 Auto Formatting을 적용할 수 있습니다.
방법
구글 깃허브에서 자신이 사용하는 언어와 IDE 환경에 맞는 XML파일을 다운 받습니다.
IntelliJ는 File -> Setting -> Editor -> Code Style에서
Eclipse는 Preferences ->JAVA ->Code Style ->Formatter
다운 받은 xml파일을 Import 시켜주면 됩니다.
if, else, for, do, while 문에서 body가 비어 있거나 한 줄의 body라도 braces를 사용해서 감싸야 합니다.
// 허용 x
if (!isAuthenticated) return "login";
// 허용 O
for (int i = 0; i < 10; i++) {
// empty body
}
// 허용 O
if (!isAuthenticated) {
return "login";
}
Block indentation: +2 spaces
자바는 +2 spaces를 사용합니다.
IDE를 사용하는 경우 tab → 2 spaces으로 변환해주는 설정을 사용하면 편합니다.
public class Example {
public void method() {
if (condition) {
// 코드 블록 내용
}
}
}
Indent continuation lines at least +4 spaces
코드가 길어져 한 줄에 전부 작성할 수 없어서 다음 줄로 넘기는 경우에는 4칸의 spaces를 사용해야 합니다.
public class Example {
public void method() {
someMethodWithManyParameters(param1, param2, param3,
param4, param5, param6);
}
}
비어있는 블록
빈 블록은 개행하거나, 개행하지 않거나 상관없습니다.
하지만 여러 줄인 경우 반드시 개행해주어야 합니다.
// This is acceptable
void doNothing() {}
// This is equally acceptable
void doNothingElse() {
}
// This is not acceptable: No concise empty blocks in a multi-block statement
try {
doSomething();
} catch (Exception e) {}
Horizontal whitespace(수평 공백)
예약어와 괄호 사이의 공백이 있는 경우가 더욱 가독성이 좋습니다.
if (condition) {
// 코드
}
for (int i = 0; i < 10; i++) {
// 코드
}
예약어와 닫는 중괄호 사이의 공백
**} else {
// 코드
}
} catch (Exception e) {
// 코드
}**
이항 또는 삼항 연산자의 양쪽 공백
int result = (a + b) * (c - d);
boolean condition = (x > y) ? true : false;
한번의 선언에는 하나의 변수
모든 변수는 하나의 선언에는 하나의 변수가 원칙입니다.
// 사용하지 말 것
int a,b;
// 권장
int a;
int b;
변수는 필요한 경우에만 선언해야 합니다.
주석을 다는 방법
다중 라인으로 주석을 달아야 할 때
/*
* This is // And so /* Or you can
* okay. // is this. * even do this. */
*/
3개의 방법 중 하나를 사용하는 것이 추천됩니다.
자바 제어자 순서
권장되는 순서는 다음과 같습니다.
public protected private abstract default static final transient volatile synchronized native strictfp
네이밍 컨벤션
클래스 → UpperCamelCase로 일반적으로 명사를 사용합니다.
메소드 → lowerCamelCase로 주로 동사를 사용합니다.
상수 → UPPER_SNAKE_CASE를 사용합니다.
나머지 → 대부분 lowerCamelCase로 작성합니다.
프로그래밍 습관
- @Override는 항상 옳습니다. 오버라이딩을 하는 경우라면 무조건 쓰는 게 좋습니다. ((부모 메소드가 Deprecated 인 경우 생략)
- 예외 처리는 비워놓지 않는 것이 원칙이지만 의도된 것이라면 주석을 달아주는 것이 좋습니다.
클래스 import
클래스를 import할 때는 와일드카드를 사용하지 않고 반드시 사용하는 객체를 명시하는 것이 좋습니다.
'Java' 카테고리의 다른 글
[디자인 패턴] 븟츠의 데코레이터 패턴 (2) | 2024.09.08 |
---|---|
븟츠의 clone 재정의는 항상 조심하자! (0) | 2024.08.25 |
만두의 Exception? (0) | 2024.08.05 |
븟츠의 JWT 소개 및 정리 (0) | 2024.08.03 |
븟츠의 try-finally 보다는 try-with-resources를 사용하자! (0) | 2024.07.28 |