Clean Code를 읽고 내용을 정리한 것입니다.
책 구매하러 가기
1. 작게 만들어라
함수는 100줄을 넘기지 마라.
만약 100줄이 넘어가는 함수가 있다면 따로 함수로 분리하라.
그래야 읽고 이해하기 쉬워진다.
2. 한 가지만 해라.
아래의 함수는 몇 가지를 수행하는 것일까?
1) 페이지가 테스트 페이지인지 판단한다.
2) 맞다면 설정 페이지/해제 페이지를 넣는다.
3) 페이지를 렌더링한다.
함수 이름 아래에서 추상화 수준이 한 단계인 행위를 수행하면 한 가지 동작을 하는 것이다.
한 가지의 개념을 추상화 수준에서 생각하고 일관되게 작성하도록 한다.
3. 서술적인 이름을 사용하라.
함수 이름을 보고 짐작한 동작이 그대로 작동하는 이름이 좋다.
ex) isTestable, setup
4. 함수 매개변수
매개 변수를 최대한 적게 작성하라.
3개 이상은 가급적 피하고, 4개 이상은 특별한 이유가 있어야 한다. (특별한 이유가 있어도 사용하지 마라)
테스트 관점에서 생각해보자
매개 변수가 1개인 함수를 테스트하려고 한다.
매개 변수로 들어갈 수 있는 개수가 100개라면 100번을 다 수행해야 정확한 동작을 보장한다고 할 수 있다.
만약 매개 변수가 2개 이상이라면? 4개 이상이라면?
많은 매개변수는 동작을 예측하기 힘들게 만든다.
5. 함수 출력
함수 매개변수를 출력으로 사용하지 마라.
append(list, item)보다 list.append(item)이 직관적이다.
자바의 this는 이럴 때 쓰라고 만든 것이다.
6. 명령과 조회 분리
private boolean setUser(User user, String value) { ... }
if (setUser(user, min)) { ... }
함수를 작성한 개발자는 setUser를 동사로 의도하고 작성했지만
if문에서 boolean의 의미로 사용하는 순간 형용사처럼 느껴진다.
그래서 if의 setUser는 'user의 어떤 필드가 min으로 설정되어 있다면' 이라고 해석될 여지가 있다.
7. 예외처리는 try / catch를 사용하라
if (condition1) {
if (user.status == UserStatus.NORMAL) {
...
} else {
log.error("error1");
}
} else {
log.error("error2");
return ErrorCode.ERROR;
}
---
try {
...
} catch (UserStatusException e) {
log.error(e.getMessage());
}
try/catch 구문을 사용하면 오류를 처리하는 로직을 따로 뺄 수 있어 깔끔하다.
'IT 도서 > Clean Code' 카테고리의 다른 글
[Clean Code] 시스템 (0) | 2020.02.16 |
---|---|
[Clean Code] 클래스 (0) | 2020.02.16 |
[Clean Code] 단위 테스트 (0) | 2020.02.15 |
[Clean Code] 주석 (0) | 2020.02.14 |
[Clean Code] 의미 있는 이름을 사용하라. (0) | 2020.02.12 |