작게 만들어라!
- 함수는 작게 만들수록 좋다.
- if, else, while문 등에 들어가는 블록은 한 줄이어야 함.
- 중첩 구조가 생길만큼 함수는 커져서는 안된다.
한 가지만 해라!
- 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.
- 추상화 수준의 함수에 작게 만들어놓은 함수를 호출할 것.
- 함수에서 선언, 초기화 등 섹션으로 나눠진다면, 이는 한 함수에서 여러 작업을 한다는 증거임.
- 한 가지 작업을 하는 함수는 자연스럽게 섹션으로 나누기 어렵다.
함수당 추상화 수준은 하나로!
- 함수가 확실히 한 가지 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야함.
fun example() {
getHtml() // 높은 수준의 추상화
PathParser.render(pagePath) // 중간 수준의 추상화
String.append("\\n") // 낮은 수준의 추상화
}
- 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈림.
위에서 아래로 코드 읽기 : 내려가기 규칙
- 코드는 위에서 아래로 이야기처럼 읽혀야 좋음.
- 한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 옴.
- 즉, 위에서 아래로 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아짐.
- 각 함수는 다음 함수를 소개한다. 또한 각 함수는 일정한 추상화 수준을 유지한다.
Switch 문