DAY 6
🔖 오늘 읽은 범위 : 3장. 함수(p.39 ~ 54)
<aside>
😃 책에서 기억하고 싶은 내용을 써보세요.
</aside>
- 함수는 작게 만들어라 (p. 42) 짧을수록 좋다
- 들여쓰기는 1단이나 2단을 넘어서면 안된다. (p. 44)
- 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다 (p. 44)
- 함수가 한 가지 일만 하는지 판단하는 방법
- 함수 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. (p. 45)
- 의미 있는 이름으로 다른 함수를 추출할 수 있다 (p. 45)
- 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다. 특정 표현이 근본 개념인지 아니면 세부사항인지 구분하기 어렵다. (p. 46)
- 코드는 위에서 아래로 이야기 처럼 읽혀야 좋다. ~ 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. - 내려가기 규칙 (p. 46)
- switch문을 써야한다면 추상 팩토리에 꽁꽁 숨겨라.
- 서술적인 이름을 사용하라. 이름이 길어도 괜찮다. 여러 단어를 사용해도 좋다. 시간을 들여도 괜찮다. 이런저런 이름을 넣고 코드를 읽어보면 더 좋다. 설계가 뚜렷해지므로 코드를 개선하기 쉬워진다. (p. 49)
- 모듈 내에서 함수 이름은 일관성있게 같은 문구, 명사, 동사를 사용한다.
- 함수 인수
- 이상적인 인수 개수는 = 입력인수 0개, 출력인수 없음
- 많이 쓰는 단항 형식
- 인수에 질문을 던지는 경우 (출력 인수가 있어도 됨)
- 인수를 뭔가로 변환해 결과를 반환하는 경우 (가급적 입력 인수와 출력 인수 형식이 동일하도록)
- 입력 인수만 있는 이벤트 함수
- 부울 값을 넘기지 말자. 함수가 여러 가지를 처리한다고 대놓고 공표하는 셈이다. → 함수를 분리해라
- 이항 함수 해결 방법
- 메서드를 “그 인자” 클래스의 멤버 변수로 만들어 호출한다.
- “그 인자”를 클래스의 멤버 변수로 만들어 인수로 넘기지 않는다.
- 새 클래스를 만들어 구성자에서 “그 인자”를 받고 메서드를 구현한다.
- 그 외 방법
- 객체를 생성해 인수를 줄인다.
- 가변 인자의 경우 리스트형 인자 하나로 취급 가능하다.
- 함수와 인수가 동사/명사 쌍을 이루게 한다. write(name), writeField(name)
- 함수 이름에 인수 이름을 넣는다. 인수 순서를 기억할 필요가 없어진다.
<aside>
🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
</aside>
기억하고 싶은 내용이 너무 많았다.
함수는 짧을 수록 좋다는 것은 알고 있었지만, 인자를 많이 쓰면 안 좋다는 점을 새로 깨달았다.
그동안 고민했던 것들에 대한 해결이 이 책에 나와있어서 속이 후련했고, 내가 하는 고민은 이미 남이 다 하고 해답까지 찾아놨다는 것을 다시 한번 깨달았다.
읽으면서 의문을 제기했던 내용이 그 다음에 설명으로 나와서 놀랐고, 사람들이 많이 추천하는 책은 이유가 있구나 생각했다.
<aside>
🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
</aside>