작게 만들어라
- 20줄도 길다
- if/else/while 문 등에 들어가는 블록은 한 줄이어야 한다
- 중첩 구조가 생길만큼 함수가 커져서는 안된다
함수는 한 가지를 해야한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야한다
- 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다
함수당 추상화 수준은 하나로
- 내려가기 규칙: 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다.
Switch 문
- 다형적 객체를 생성하는 코드 안에서 단 한 번만 참아준다.
- 상속 관계로 숨긴 후 다른 코드에 노출하지 않는다.
서술적인 이름을 사용하라
- testableHtml -> SetupTeardownIncluder.render
함수가 하는 일을 좀 더 잘 표현하므로 훨씬 좋은 이름이다.
- 길고 서술적인 이름이 짧고 어려운 이름보다 좋다.
- 이름을 붙일땐 일관성이 있어야 한다.
함수 인수
- 이상적인 인수 개수는 0개(무항) -> 1개(단항) -> 2개(이항)
- 3개(삼항)는 가능한 피하는 편이 좋다.
- 4개 이상은 특별한 이유가 있어도 사용하면 안된다.
- 플래그 인수는 추하다
부수 효과를 일으키지 마라
- 남몰래 다른짓을 하지 말자
- 다른짓을 할거라면 이름을 제대로 짓자 (한 가지만 한다는 규칙을 위반하더라도)
명령과 조회를 분리하라
- 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다.
오류 코드보다 예외를 사용하라
- 오류 코드 대신 예외 사용하면 코드가 깔끔해진다.
- try/catch 블록은 별도 함수로 뽑아내는 편이 좋다.
- 오류 처리도 한 가지 작업이다.
반복하지 마라
구조적 프로그래밍
- 큰 함수에서는 return 문이 하나여야 한다.
루프 안에서 break나 continue를 사용해선 안 되며 goto는 절대 안된다.
- 하지만 함수를 작게 만든다면 return, break, continue를 여러 차례 사용해도 괜찮다.