본문 바로가기

Book review/clean code

3장. 함수(clean code)

1. 작게 만들어라

  • 함수는 짧을수록 좋고, 들여쓰기는 1단이나 2단을 넘어서지 않는게 좋다.
  • if문 / else 문 / while문 등에 들어가는 블록은 한 줄로, 거기서 함수를 호출해라.

 

2. 한가지만 해라

  • 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 분리하라.
  • 함수 내의 문장의 추상화 수준은 동일한 것이 좋다. (함수로만 구성된 코드는 추상화 수준이 높고, 구체적은 세부 구현을 담은 코드는 추상화 수준이 낮다.) 
    코드가 위애서 아래로 이야기처럼 읽히면 추상화 수준을 일관되게 유지하는 것이 쉬워진다. (내려가기 규칙: 한 함수 다음에 추상화 수준이 한 단계 낮은 함수가 오도록 함)

 

3. switch문

  • switch문은 다형성 객체를 생성하는 경우에 유용하다. 

 

4. 서술적인 이름을 사용하라

  • 서술적인 이름이 짧고 어려운 이름보다 좋다. ex) includeSetupAndTearddownPages

 

5. 함수 인수

  • 인수는 적을수록 좋다.
  • 많이 쓰는 단항 형식 ex)
    1. 인수에 질문을 던지는 경우 ex) boolean fileExists("MyFile") 
    2. 인수를 뭔가로 변환해 반환하는 경우 ex) InputStream fileOpen("MyFile") 
    3. 이벤트 함수 ex) passwordAttemptFailedNtimes(int attempts)
  • 단항 형식보다 복잡한 이항 함수
    1. Point p = new Point(0,0) 처럼 자연적 순서가 존재하는 경우
  • 인수가 2-3개가 필요하다면, 독자적 클래스 변수를 선언할 가능성이 있나 살펴봐라. 

 

6. 부수 효과는 일으키지 마라!

  • 의도하지 않은 결과가 초래될 수 있다. 

 

7. 오류 코드보다 예외를 사용하라!

  • 정상 동작과 오류 처리 동작을 분리하면 코드를 이해하고 수정하기 쉬워진다.

 

8. 구조적 프로그래밍

  • 함수는 return문이 하나인 것이 좋다. 

적용하기

현재 코드에 "한가지만 해라."의 원칙에 어긋나는 함수가 많다. 특히 service, provider단에서 여러가지 로직을 처리하고 있는 부분들이 있다.

 

 

 

출처) clean code / 인사이트 

'Book review > clean code' 카테고리의 다른 글

6장. 객체와 자료구조(clean code)  (0) 2021.08.25
5장. 형식 맞추기(clean code)  (0) 2021.08.09
4장. 주석(clean code)  (0) 2021.08.06
2장. 의미 있는 이름(clean code)  (0) 2021.08.04
1장. 깨끗한 코드(clean code)  (0) 2021.08.04