[책 리뷰] 쏙쏙 들어오는 함수형 코딩
[책 리뷰] 쏙쏙 들어오는 함수형 코딩
책을 신청할 때, 책 쪽수를 생각하지 못하고 신청했는데 귀여운 표지와는 다르게 도착한 책이 굉장히 두꺼워서 놀랬다. 확인해보니 550페이지였는데, 내용을 보니 왜 쪽수가 많은지 알 수 있었다.
이런식으로 자세한 설명들도 있고, 여러 삽화들이 많다보니 두꺼울 수밖에.. 다행스럽게도 전공책마냥 글로만 적혀있어 두꺼운게 아니였다.
책을 처음 봤을때의 첫인상은 ‘엇, 이거 헤드퍼스트 시리즈와 느낌이 유사한데..’ 였다. 내부 구성이 헤드 퍼스트 책과 구성이 거의 동일하다 싶이 했기때문이다.. 혹시 헤드퍼스트에 참여한 저자인가 싶었는데 아니였다. 개인적으로 헤드퍼스트 책에 비해서 더 깊은 내용을 담고있는 것 으로 느껴진다.
위와 같이 헤드퍼스트 시리즈를 본 사람이라면 책의 구성이나 설명하는 방식 자체가 헤드 퍼스트와 많이 유사하다고 느낄 수 있을 것이다. 개인적으로 헤드퍼스트의 설명 방식을 좋아하는 편이라 재미있게 읽었다.
일단 이 책의 타겟은 2~5년 정도의 개발 경험을 가진 개발자이며, 최소 하나 이상의 프로그래밍 언어를 알고있는 사람이다. 타깃 자체가 경력자를 위한 책인 만큼 기본에서 좀 더 심화된 내용들을 담고있다.
책의 예시들은 모두 자바스크립트로 작성되어 있다. 당연히 이 책을 읽는 사람이라면 개발 언어를 하나정도는 뗐을것이기 때문에 자바스크립트를 모르더라도 내용 이해하는데는 문제는 없다.
대신 중간중간 자바스크립트를 잘 사용하는 법, 자바스크립트의 비동기에 대한 내용이 삽입되어 있어 자바스크립트를 사용하시는 분이라면 더 시너지가 날 책 이다.
책은 함수형 코딩이라고 적혀있지만, 함수형 코딩이라는 개념이 최근에 주목받은 만큼 기존 레거시 코드들을 함수형 방식으로 리팩터링 하는 부분에 대한 설명도 함께 진행하고 있다. 또한 함수형 코딩이라는 부분이 보기 좋은 코드, 유지보수하기 좋은 코드를 지향하기 때문에 클린코드에 대한 부분도 대략 설명해주고 있다.
대략적으로 ‘함수형 코딩 + 리팩터링 + 클린 코드 + 디자인 패턴 + 클린 아키텍처’의 내용이 모두 들어가 있는 책이라고 보면 된다. 개인적으로 본인은 재미있게 읽었고, 이 책을 통해서 전반적인 개발 패턴등을 익히고 특정 부분을 깊게 파는 것이 좋을 듯 하다.
예를 들면 디자인 패턴 부분이 흥미가 있었다면, 이 책을 읽고 헤드퍼스트 디자인 패턴 책을 읽는다거나 리팩터링 부분이 맘에 들었다면 마틴 파울러의 리팩터링을 추가적으로 읽는 식으로!
이 책은 크게 2부분으로 나뉘어져 있고 챕터는 19개이다.
첫번째 부분 (챕터 1~9)
챕터 첫번째 부분은 두번째 부분을 위한 준비단계라고 볼 수 있다. 예시코드는 이커머스의 ‘주문-배송’ 프로세스를 예시로 들어 진행한다.
함수형 프로그래밍에 대한 개념과 간단한 리팩터링 기술을 알려준다. 또한 좋은 설계 방식, 코드를 어떻게 구성할 것인지, 그리고 유지보수하기 좋은 방식을 알려주며 어떤식으로 계층을 분석할 것인지에 대한 부분을 알려준다.
내용이 진짜 가려운곳 엄청 긁어주는 내용이다. 주니어들이 개발을 진행하다 보면 ‘어떻게 하면 더 코드를 잘 짤 수 있을까?’ 하면서 이것저것 레퍼런스를 찾아보는데 레퍼런스를 찾기위해선 남이 잘 짠 코드들을 봐야한다. 본인도 이런걸 정리해 둔 책이 어디 없을까 한탄하며 맨땅에 헤딩 식으로 익혀나갔었는데 이 책은 그 모든것들을 알려준다.. (억울하다…)
몇 개의 주제 제목을 나열해보자면…
- 재사용하기 쉽게 만들기
- 테스트하기 쉽게 만들기
- 모든 동작을 불변형으로 만들 수 있나요?
- 새로 만드는 코드에 함수형 사고 적용하기
- 방어적 복사 구현하기
- 계층형 설계 패턴
- 추상화 벽으로 구현을 감춥니다
너무나도 궁금하지 않은가!!
두번째 부분 (챕터 10~19)
두번째 부분은 앞쪽의 내용을 토대로 조금 더 심화된 부분이다.
함수형 프로그래밍에서 제일 중요한 일급객체, 일급함수 등을 설명하고 본격적으로 리팩터링에 대한 부분을 알려준다. 그리고 앞쪽이 이론의 비중이 많았다면 뒤쪽은 코드를 통한 실습예제의 비중이 많다.
그리고 단순히 코드 예제로써 알려주는 것이 아니라, 문서 작성하는 방법도 알려준다. 행위를 정리하여 타임라인을 만들고 그러한 기반 작업을 통해 코드를 좀 더 깔끔하게 짤 수 있도록 하는 방법을 알려준다.
이 부분도 몇개의 주제 제목을 나열해보자면…
- 절차적 코드와 함수형 코드 비교
- 좋은 타임라인의 원칙
- 큐를 재사용 할 수 있도록 만들기
- 암묵적 시간모델 vs 명시적 시간모델
- 반응형 아키텍처는 무엇인가요?
- 계층형 설계란?
- 절차적 프로그래밍과 함수형 프로그래밍의 차이
개인적으로 부담없이 가볍게 후루룩 읽을 수 있는 책이라고 느껴진다. 그렇지만 내용이 가볍지는 않다. 최대한 쉽게 설명하려고 한 저자의 노력이 보이는데 이 부분때문에 어려운 부분도 쉽게 읽어나갈 수 있다고 느껴지는 것 뿐이다.
개인적으로 자바스크립트 개발하시는 분께는 확실히 추천 드릴 수 있는 책이다. 개인적으로 아쉬웠던 점은 책 자체가 좀 딥하다 보니 초반에는 재밌게 읽어 나갔지만 뒤쪽으로 갈수록 지치는 경향이 좀 있었다. 그리고 이런저런 삽화나 간단한 부분까지 너무 과하게 설명되어있지 않나? 라는 생각도 조금 들었다.
하지만 내용 자체는 정말 좋았다. 그리고 초보를 벗어난 개발자에게 약간의 로드맵을 제공해주는 책이다.
별점
: ⭐️⭐️⭐️⭐️
한줄평
: 함수형 프로그래밍에 대한 개념을 익히고, 더 좋은 코드를 만들어 나갈 수 있는 책.
이런분께 추천
:
- 함수형 프로그래밍에 관심이 많은 개발자
- 개발 실무 경력이 2~3년이 지났는데 어떤걸 공부해야 할지 모르겠는 개발자
- 간단한 코드로 복잡한 프로그램을 만드는 방법을 알고싶은 개발자