개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned) 날짜
2022. 04. 28
오늘 읽은 범위
3장. 함수
책에서 기억하고 싶은 내용을 써보세요.
* 작게 만들어라!
- 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다.
* 한 가지만 해라!
- 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다.
* 함수 당 추상화 수준은 하나로!
- 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다.
- 내려가기 규칙(한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 온다.)
- 핵심은 짧으면서도 '한 가지'만 하는 함수다.
* Switch 문
- switch 문을 추상 팩토리(abstract factory)에 꽁꽁 숨긴다.
* 서술적인 이름을 사용하라!
- 이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 함수 이름은 같은 문구, 명사, 동사를 사용한다.
* 함수 인수
- 함수에서 이상적인 인수 개수는 0개(무항)다.
- 플래그 인수는 추하다. 함수로 부울 값을 넘기는 관례는 정말로 끔찍하다.
- 함수의 의도나 인수의 순서와 의도를 제대로 표현하려면 좋은 함수 이름이 필수다.
- 단항 함수는 함수와 인수가 동사/명사 쌍을 이뤄야 한다.
* 부수 효과를 일으키지 마라!
- 부수 효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약속하고 남몰래 다른 짓도 하니까.
* 명령과 조회를 분리하라!
- 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다.
* 오류 코드보다 예외를 사용하라!
- 오류 코드 대신 예외를 사용하면 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해진다.
- try/catch 블록을 별도 함수로 뽑아내는 편이 좋다.
* 반복하지 마라!
- 하위 루틴을 발명한 이래로 소프트웨어 개발에서 지금까지 일어난 혁신은 소스 코드에서 중복을 제거하려는 지속적인 노력으로 보인다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 내가 코딩한 것을 시간이 흘러 다시 보게될 때 마다 느꼈던 문제점이 왜 그랬는지 알게되는 챕터였다.
- 코딩한 함수를 파악하려면 항상 소스 전체를 다시 보고 이해하고 또한 한 함수에 너무 많은 처리를 하다보니 이해하고 파악하기가 정말 어려웠는데,
- 앞으로는 최소한의 인수, 한 함수에는 한가지 일만, 명확한 함수명, 작고 또 작게 만드는 연습을 해야겠다.