오늘 읽은 범위

3장 함수

책에서 기억하고 싶은 내용을 써보세요.

  • 함수를 만드는 첫번째 규칙은 ‘작게’다. (p.42)
  • 함수는 한 가지를 해야한다. 그 한 가지를 잘해야한다. 그 한 가지만을 해야한다. (p.44)
  • 함수가 확실히 ‘한 가지’ 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다. (p.45~46)
    • 위에서 아래로 코드 읽기: 내려가기 규칙
  • 함수가 작고 단순할수록 서술적인 이름도 고르기 쉬워진다. (p.49)
  • 함수에서 이상적인 인수 개수는 0개(무항)다. (p.50)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.

  • 함수 하나를 작성할 때도 이렇게 고려할 점이 많다는 걸 새삼 느꼈다. 그동안은  손이 가는 대로 코드를 짜왔던 게 아닌가 되돌아보게 된다. 처음부터 완벽하게 짤 수는 없지만, 배운 내용을 바탕으로 여러 번 다듬는 연습을 꾸준히 하면서 실력을 차차 늘려나가야겠다. (연습할 건 깃허브에 아주 많음😅)

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

추상화 수준이 같은지 확인하는 방법

  1. 무엇을 하는가어떻게 하는가가 섞여있는지 확인한다.

    무엇을 vs 어떻게
    sendWelcomeEmail() (무엇을)
    logAnalytics() (무엇을)
    form.classList.add("hidden") (어떻게)

    password.length < 8 (어떻게)

  2. 명확하게 분리 가능한 책임이 있는가? 따로 함수로 뺄 수 있는가?

잘 이해가 되지 않는 내용

  • 함수가 지나치게 작아지면 흐름을 파악할 때 오히려 여러 함수를 왔다 갔다 해야해서 가독성이 떨어지는 경우도 있다.
  • 예외가 발생하면 (throw) 코드의 흐름이 갑자기 끊겨서 디버깅이 어려울 수도 있을 것 같다.
  • 플래그 인수의 경우, 플래그 하나만으로 간단하게 분기가 되는데 굳이 함수를 둘로 나눠야할까?