[CleanCode] 함수
함수
작게 만들어라
- 모든 함수가 2,3,4 줄로 만들어라. 각 함수가 이야기 하나를 표현한다.
한가지만 해라
- 함수는 한가지를 해야 한다. 그 한가지를 잘 해야 한다. 그 한 가지만을 해야한다.
함수당 추상화 수준은 하나로!
-
한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다.
위에서 아래로 코드 읽기: 내려가기 규칙
-
코드는 위에서 아래로 이야기 처럼 읽혀야 좋다.
-
위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한번에 한단계씩 낮아진다.
-
To 문단을 읽듯이 프로그램이 읽혀야한다.
To 입력 타입에 따라 입력 타입에 값을 일괄 수정한다.
To 입력 타입이 올바른지 체크한다.
To 입력 타입에 맞는 일괄 수정값을 세팅한다.
To 일괄 수정을 DB에 수정한다.
Switch문
- 리팩토링기법을 이용하여 Switch문을 수정한다. 다형성 이용.
서술적인 이름을 사용하라
함수 인수
- 최선은 입력 인수가 없는 경우이며, 차선은 입력 인수가 1개뿐인 경우가.
부수 효과를 일으키지마라
명령과 조회를 분리하라
오류 코드보다 예외를 사용하라
반복하지마라
- 중복을 없앤다.
함수를 어떻게 짜죠?
- 처음에는 길고 복잡하다. 그런 다음 코드를 다듬고, 함수를 만들고 이름을 바꾸고, 중복을 제거한다. 메서드를 줄이고 순서를 바꾼다. 때로는 전체 클래스를 쪼갠다. 이와중에도 코드는 항상 단위 테스트를 통과한다.
주석
- 진실은 한곳에만 존재한다.
- 코드만이 정확한 정보를 제공하는 유일한 출처이다.
- 주석을 가능한 줄이도록 꾸준히 노력해야 한다.
주석은 나쁜 코드를 보완하지 못한다
코드로 의도를 표현하라
좋은 주석
- 법적인 주석
- 정보를 제공하는 주석
// kk:mm:ss EEE, 매tJI dd, yyyy 형식이다.
Pattern timeMatcher = Pattern.compile("\\d*:\\d*:\\d* \\w*, \\w* \\d*, \\d*");
- 의도를 설명하는 주석
- 의미를 명료하게 밝히는 주석
- 결과를 경고하는 주석
- TODO 주석
- 중요성을 강조하는 주석
- 공개 API에서 Javadocs
나쁜 주석
- 대다수 주석이 이 범주에 속한다.
- 주절거리는 주석
- 같은 이야기를 중복하는 주석
- 코드내용을 그대로 중복설명
- 코드를 정당화하는 주석도 아니고, 의도나 근거를 설명하는 주석도 아니고 코드보다 읽기가 쉽지 않은 주석
- 오해할 여지가 있는 주석
- 의무적으로 다는 주석
- 이력을 기록하는 주석
- 예전엔 소스 코드 관리 시스템이 없었으니까 사용했으나 현재는 혼란만 가중시킨다.
- 있으나 마나한 주석
- 너무 당연한 사실을 언급
- 무서운 잡음
- Javadocs도 잡음이다.
- 함수나 변수로 표현할 수 있다면 주석을 달지 마라
- 위치를 표시하는 주석
- 닫는 괄호에 다는 주석
- 공로를 돌리거나 저자를 표시하는 주석
- 주석으로 처리한 코드
- 소그 코드 관리 시스템이 우리를 대신해 코드를 기억해준다.
- HTML 주석
- 전역 정보
- 너무 많은 정보
- 모호한 관계
- 주석과 주석이 설명하는 코드는 둘 사이 관계가 명확해야한다.
- 비공개 코드에서 Javadocs