서평

[서평] 쏙쏙 들어오는 함수형 코딩

향찡 2022. 5. 2. 01:18

이 책은 장점은 단계별 설명, 결론과 요점 정리, 용어 설명과 간단한 연습문제에 있는 것 같습니다.

메소드를 단계적으로 설명
친절한 용어설명

책의 전반적인 부분은 분리할 코드를 찾고 래팩터링 하는 방법과 암묵적 입력과 출력을 찾는 방법을 통해 엉켜 있는 코드를 풀고 좋은 코드로 바꾸는 부분이 주를 이루고 있습니다.  이 책의핵심은 함수형 프로그램에 대해서 액션과 계산, 데이터를 구분해서 생각하고, 일급 추상을 생각하는 것이 핵심입니다.  javascript로 예제코드가 작성되어 있지만 예제가 크게 어렵지 않아 상관은 없을 것 같습니다.

이 책의 내용은 함수형 프로그램밍에 대한 이해를 돕긴 하지만 이와 별개로 좋은 코드를 작성하기 위한 사고를 길러주고 있습니다. 코드를 수정하기 전 후로 나뉘어서 어떻게 개선되는지 알려줌으로써 이해를 돕기 때문에 받아들이기 쉬웠던 것 같습니다. 책의 내용이 워낙 방대하긴 하지만 함수형 프로그래밍 입문을 하시려는 분들이 읽기 적합할 것 같습니다.

기존 코드와 개선된 코드의 비교

액션과 계산, 데이터

도대체 액션과 계산,데이터 가 무엇이냐고 묻는다면 피자 가게를 예시로 액션과 계산, 데이터가 무엇인지 아래와 같이 생각해 볼 수 있습니다.

액션 : 액션은 호출 횟수와 시점에 의존하는 것을 말합니다. 

예) 반죽 펴기, 피자 배달, 재료 주문

계산 : 어떤 것을 결정하거나 계획하는 것이 계산입니다. 계산은 실행해도 다른 곳에 영향을 주지 않으며 아무 때나 사용해도 됩니다.

예) 조리법에 나온 것을 두 배로 만들기, 쇼핑 목록 결정하기

데이터 : 변경 불가능한(immutable) 것, 이벤트에 대한 사실

예시) 고객의 주문, 영수증, 피자 조리법

이 책의 마지막 장에서 나와있는 정리 부분을 옮겨 적고 마무리 하겠습니다.

액션과 계산, 데이터

  •  코드에서 액션과 계산, 데이터를 구분해 가장 문제 되는 부분을 찾자
  • 액션에서 계산을 빼내 재사용하기 좋고 테스트하기 쉬운 코드로 리팩토링
  • 암묵적인 입력과 출력을 명시적인 것으로 바꿔 액션을 개선
  • immutable을 구현해 데이터 읽기를 계산으로 만들고
  • 계층형 설계로 코드를 구성하고 개선한다.

일급 추상

  • 언어의 문법을 일급으로 만들어 코드를 추상화
  • 함수형 반복과 혐수형 도구를 사용해 고차원으로 추론
  • 함수형 도구를 연결해 데이터 변환 파이프라인을 만든다.
  • 타임라인 다이어그램을 통해 동시성 분산 시스템을 이해
  • 버그를 없애기 위해 타임라인을 활용
  • 고차 함수로 안전하게 상태를 변경
  • 반응형 아키텍처를 사용해 원인과 효과의 결합을 줄입니다.
  • 세상과 상호작용하기 위해 어니언 아키텍처 설계를 서비스에 적용