우테코 프리코스 1주차 문제를 풀었는데 코드가 너무 더럽다,,, clean code가 어떤 느낌인지 알아보고자 우테코에서 제공해준 Google Java Style Guide에서 유용하게 쓰일 것 같은 부분만 정리해봤다⭐️
# Formatting
## Braces(중괄호)
1. body가 없거나 한 줄 구문인 경우에도 중괄호가 쓰인다.
2. 비어있지 않은 블록 : K & R style
- 1️⃣ 아래의 경우들을 제외하고는 여는 중괄호 앞에 줄바꿈이 없다.
- 2️⃣ 여는 중괄호 뒤의 줄바꿈
- 3️⃣ 닫는 중괄호 앞의 줄바꿈
- 4️⃣구문을 끝내거나 메서드, 생성자, 클래스의 body를 끝내는 중괄호인 경우에만 닫는 중괄호 뒤에 줄바꿈을 쓴다.
예를 들어, 5️⃣ else나 콤마가 뒤에 오는 중괄호 뒤에는 줄바꿈이 없다.
return () -> 1️⃣ { 2️⃣
while (condition()) {
method();
}
};
return new MyClass() 1️⃣ { 2️⃣
@Override public void method() {
if (condition()) {
try {
something();
3️⃣} catch (ProblemException e) {
recover();
}
3️⃣}5️⃣else if (otherCondition()) {
somethingElse();
}5️⃣else {
lastThing();
}
}4️⃣
};
3. 빈 블록들 : 간결할 수 있음
- 빈 블록이나 block-like contruct는 2번에서 설명한 K & R style일 수 있다.
- multi-block 구문(if/else, try/catch/finally)의 일부분이 아닌 한 {} 사이에 문자나 줄 바꿈 없이 열린 후 즉시 닫을 수 있다.
// 허용
void doNothing() {}
// 허용
void doNothingElse() {
}
// 허용X : multi-block statement
try {
doSomething();
} catch (Exception e) {}
## 들여쓰기
들여쓰기 지속은 최소 +4 스페이스
- 줄 바꿈할 떄, 각 줄은 원래 줄보다 +4 스페이스만큼 들여쓰기 한다.
# Naming
## 식별자 유형별 규칙
1. 패키지 이름
- _없이 소문자와 숫자만 사용
2. 클래스 이름
- lowerCamelCase
- 일반적으로 명사나 명사구 사용
ex) Character, ImmutableList - 인터페이스 이름 또한 명사나 명사구를 쓸 수 있지만 가끔 형용사나 형용사구가 쓰이기도 한다.
ex) List, Readable - 테스트 클래스는 이름이 Test로 끝난다.
ex) HashIntegrationTest
3. 메서드 이름
- lowerCamelCase
- 일반적으로 동사 또는 동사구 사용
ex) sendMessage
4. 상수 이름
- UPPER_SNAKE_CASE
- 모두 대문자이고 각 단어는 _로 구분한다.
5. 상수가 아닌 필드 이름
- lowerCamelCase
- 일반적으로 명사나 명사구 사용
6. 파라미터 이름
- lowerCamelCase
- public 메서드에서 한 글자 파라미터 이름 사용하는 것은 피해야 한다.
7. 지역 변수 이름
- lowerCamelCase
# Programming Practices
## @Override : 항상 사용
단, 부모 메서드가 @Deprecated인 경우에는 @Override 생략 가능
## Exception 잡기 : 생략하지 않기
전형적인 반응은 로그를 남기거나 불가능하다고 간주되는 경우 AssertionError를 다시 던진다.
만약 정말로 catch 블록에서 아무것도 하지 않는게 적합한 경우. 아무것도 하지 않아도 되는 정당한 이유를 주석으로 설명한다.
try {
int i = Integer.parseInt(response);
return handleNumericResponse(i);
} catch (NumberFormatException ok) {
// 이것은 숫자가 아니다; 괜찮으니 continue해라
}
return handleTextResponse(response);
단, 테스트에서 발견되 exception의 이름이 expected이거나 expected로 시작하는 경우, 주석 없이 생략될 수 있다. 다음은 테스트 중인 코드가 예상되는 타입의 exception을 발생시키는 것이 확실한 관용구이기 때문에 주석이 필요하지 않다.
try {
emptyStack.pop();
fail();
} catch (NoSuchElementException expected) {
}
'JAVA' 카테고리의 다른 글
int와 Integer 차이 (0) | 2023.08.30 |
---|