[Clean Code] 3장 함수
생성일: 2024년 1월 17일 오후 4:42
추상화 수준


작게 만들어라!
한 가지만 해라
한 가지만 하려면 ? 함수 당 추상화 수준은 하나로!
Switch 문
서술적인 이름을 사용하라!
함수 인수
todo: 함수 분석해보기
부수 효과를 일으키지 마라!
예를 들어 비밀번호를 암호화하는 함수에서 유저의 세션을 초기화하기
문제점
- 시간적인 결합 초래
- 잘못하면 세션 정보 날아갈 수 있음
명령과 조회를 분리하라!
//모호한 의미의 코드 : username이 unclebob으로 설정되어 있는지 확인하는 코드같음
if (set("username", "unclebob"))..
//→
if(attributeExists(”username”)){
setAttributo(”username”,”unclebob”)
}
오류 코드보다 예외를 사용하라!
오류코드를 반환하면 if문에서 표현식으로 활용하기 쉽다.
if(deletePage(page)==E_OK)
문제
중첩되는 코드 야기 & 오류코드 바로 처리
Try/Catch도 정답은 아니다. 코드 구조에 혼한을 일으킨다.
어떻게?
정상 동작과 오류 처리 동작을 분리한다. 오류도 ‘한가지’ 작업에 속한다.
//모든 오류 처리
public void delete(Page page) {
try {
deletePageAndAllReferences(page);
}
catch (Exception e) {
logError(e);
}
}
//예외를 처리하지 않음
private void deletePageAndAllReferences(Page page) throws Exception {
deletePage(page);
registry.deleteReference(page.name);
configKeys.deleteKey(page.name.makeKey());
}
private void logError(Exception e) {
logger.log(e.getMessage());
}
반복하지 마라!
3-7처럼 중복을 없앨 수 있다.
private void includeSetupAndTeardownPage() throws Exception {
includeSetupPage();
includePageContent();
includeTeardownPages();
updatePageContent();
}
구조적 프로그래밍, AOP,COP등이 중복제거전략이다.
구조적 프로그래밍
모든 함수와 함수 내 모든 블록에 entry 와 exit가 하나만 존재해야 한다.
- break, continuem goto 안됨
- 함수를 작게 만든다면 가능 (goto 뺴고)
함수를 어떻게 짜죠?
- 코드를 다듬고
- 함수를 만들고
- 이름을 바꾸고
- 중복을 제거하고
- 메서드를 줄이고
- 순서를 바꾼다.
'책 > Clean Code' 카테고리의 다른 글
[Clean Code] 11장 시스템 (0) | 2025.03.17 |
---|---|
[Clean Code] 9장 단위 테스트 (0) | 2025.03.17 |
[Clean Code] 7 장 오류 처리 (0) | 2025.03.17 |
[Clean Code] 5장 형식 맞추기 (0) | 2025.03.17 |
[Clean Code] 1장 깨끗한 코드 (2) | 2024.01.30 |