Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
DAY05_<TIL>3장 함수
#clean_code
2년 전
778


TIL (Today I Learned)

2022.01.22

오늘 읽은 범위

3장 함수


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

1. 작고 짧게 만들어라. 중첩 구조가 생길 만큼 함수가 커져서는 안 된다. 그래야 함수는 읽고 이해하기 쉬워진다.

2. 함수는 한 가지를 해야 한다. 어쨌거나 우리가 함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위해서이다.

3. 함수 당 추상화 수준은 하나로! (내려가기 규칙) 위에서 아래로 읽어내려 가듯이 코드를 구현하면 추상화 수준을 일관되게 유지하기 쉬워진다.

4. 서술적인 이름을 사용하라. 서술적인 이름을 사용하면 개발자 머릿속에서도 설계가 뚜렷해지므로 코드를 개선하기 쉬워진다. 이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 함수 이름은 같은 문구, 명사, 동사를 사용한다.

5. 함수에서 최선은 입력 인수가 없는 경우이며, 차선은 입력 인수가 1개뿐인 경우이다.

6. 부수 효과를 일으키지 마라. 여기서 함수가 일으키는 부수 효과들이 있다. 시간적인 결합은 혼란을 일으키고 특히 부수 효과로 숨겨진 경우에는 더더욱 혼란이 커진다.

7. 명령과 조회를 분리하라. 함수는 뭔가 수행하거나 뭔가 답하거나 둘 중 하나만 해야 한다. 객체 상태를 변경하거나 아니면 객체 정보를 반환하거나 둘 중 하나이다.

8. 오류 코드보다 예외를 사용하면 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해진다. 새 예외는 재컴파일/재배치 없이도 새 예외 클래스를 추가할 수 있다.

9. 반복하지 마라. 중복을 없애면 가독성이 크게 높아진다.

10. 구조적 프로그래밍 원칙은 모든 함수와 함수 내 모든 블록에 입 출구가 하나만 존재해야 한다고 한다. 하지만 그건 함수가 아주 클 경우에 상당한 이익을 제공할 뿐 함수를 작게 만든다면 여러 차례 사용해도 괜찮다.

11. 함수는 어떻게 짜죠? 먼저 생각을 기록한 후 읽기 좋게 다듬듯이 길게 짜 놓은 코드를 빠짐없이 테스트하고 다듬고, 함수를 만들고, 이름을 바꾸고, 중복을 제거한다. 처음부터 탁 짜내지 않는다.

12. 결론. 대가 프로그래머는 시스템을 (구현할) 프로그램이 나이라 (풀어갈) 이야기로 여긴다. 프로그래밍 언어라는 수단을 사용해 좀 더 풍부하고 좀 더 표현력이 강한 언어를 만들어 이야기를 풀어간다. 시스템에서 발생하는 모든 동작을 설명하는 함수 계층이 바로 그 언어에 속한다. 진짜 목표는 시스템이라는 이야기를 풀어가는 데 있다는 사실을 명심하기 바란다.

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

  • 함수를 짜는 것도 아직 어려워하는 나에겐 함수편은 정말 읽기도 어려웠다. 이해가 온전히 다 되지않았고, 뭔가 깊게 이해하기 어려운 부분이 많았다. 여러번 다시 읽어봐야할 것 같다.

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

  • 함수 인수(플러그인수, 이항 함수, 삼항 함수, 인수 객체)

  • Try/Catch 블록 뽑아내기

  • Error.java 의존성 자석