개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned)
- 2024.03.04.
오늘 읽은 범위
- 3장. 함수 (p39~p65)
책에서 기억하고 싶은 내용
Focus
의도를 분명히 표현하는 함수는 어떻게 구현할까?
함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할까?
이렇개 하면 될거야...
작게 만들어라(p42)
20줄도 길다.
들여쓰기는 2Depth 이하로...
한 가지만 하게 만들어라(p44)
함수 당 추상하 수준은 하나!
내려가기 규칙(p46)
위에서 아래로 내려가면서 추상화 수준이 한 단계씩 낮아진다.
Switch문(p47)
추상 팩토리에 숨겨라.(GOF - p65)
서술적 이름 사용
2장의 연장선
코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하도록 한다.
인수는 되도록 적게 사용하라.(p50)
0개: 이상적
1개: 괜찮아
2개: 좀 읽기 어려워짐
3개: 되도록 피하자
4개 이상: 하지마!!!
플래그 인수: 하지마!!!
객체 인수: 괜찮음. - 객체 명으로 개념을 이해할 수 있음
함수 이름에 인수를 넣어라(p54)
assertEquals(expected, actual)보다
assertExpectedEqualsActual(expected, actual)이
더 명확하고 인수 순서 기억하기에도 좋다.
부수효과 없애라(p54)
명령과 조회를 분리해라(p56)
함수는
1) 수행하거나, 2) 답한다.
둘 다는 안돼!!!
오류코드보다 예외 사용(p57)
try/catch/finally를 사용해라
단, 각 구문 블록도 추상화해라
반복하지마라(p60)
구조적 프로그래밍하라(p61)
return문은 1개만...
break, continue, goto 절대 안돼!!!!
내가 생각하는 핵심과 해석
함수는 작게 만들어라.
이것을 잊지말고 수행해라.
내려가기 규칙을 준수하자.
2장의 내용을 잊지말고 수행해라.
첨언
3장의 길고 긴 내용은 "함수를 작게 작성하라"라는 한 문장으로 요약할 수 있다.
반성과 각오
사실 알고 있는 내용입니다.
하지만 실천하고 있지 않습니다.
이유는 함수를 작게 만들기 위해 추상화하는 과정이 괴롭습니다.
처음에는 이 괴로움을 견디며 추상화하기 위해 노력하지만
결국 '이 시간에 기능을 하나 더 만들지...'라는 생각에 놓아버리게 됩니다.
이번에는 유혹에 넘어가 놓아버리지 않기를 간절히 바라며
오늘 또 작은 함수만들기를 각오합니다.