7월의 독서.
루이스 아텐시오 소프트엔지니어가 쓴
[함수형 자바스크립트] 책을 읽었다.
읽게 된 배경은 ..
if else로 뒤 범벅이된 내 코드를 보고 있자니
팀원들에게 코드리뷰를 부탁하기도 민망한 상황이 빈번하게 일어나는 것이 지속적으로 관찰되었다.
코드 작성을 어떻게 하면 더욱 가독성있고 간편하게 할 수 있을까 고민하던 중
같은 팀원이 구매한 함수형 자바스크립트 책을 빌려보았다.
이 책은 선언적인 함수형 프로그래밍이 명령형인 절차,객체지향 프로그래밍과 비교해 다음과 같은 장점을 가지고 있다고 말한다.
디자인 패턴이나 새로운 프로그래밍 패러다임의 장점을 나열할때 테스트 용이성
은 항상 덧붙여지는 것 같다. 본 책은 QUnit이라는 테스트 라이브러리를 사용하는데 jest를 사용했으면 더 보편화된 예제코드들이 않았을까 생각이 된다.
루프나 조건문을 함수형 프로그래밍에서 쓰이는 도구를 사용하여 서술부와 평가부를 분리하고 각 요소를 올바르게 작동하는 것에만 전념할 수 있게 도와주는 것이 이 책이 말하는 함수형 프로그래밍의 장점이다.
또한 함수형 프로그래밍의 특징 및 가장 중요한 개념은
참조 투명성 - 동일한 인자에 대해 일관된 반환값을 보장하여 전체 함수결과를 예측할 수 있다.
참조 투명성으로 인해 코드의 가독성이 올라간다는 것이다.
참조 투명성은 곧 함수에 주어진 인자를 변경시키거나 전역 콘텍스트의 변수 값을 변경하는 등의 사이드 이펙트가 발생하는 것을 미연에 방지해주는 것에 도움을 주는데,
사이드 이펙트라고 한다면 빠질 수 없는 골칫덩어리 (이 수식어는 아마 나한테만 적용될 수도?) 비동기 프로그래밍에서는 기존의 콜백패턴의 대안을 제시해주며,
더불어 이벤트 스트림 구독을 도와주는 도구인 RxJS를 사용해 더 높은 수준으로 코드를 추상하는 것이 어떻게 생긴것인가에 대해 알려준다.
함수형 프로그래밍(FP)가 무엇인지 궁금하다면 해당 주제에 관심이 있으나 처음 접하는 초심자에게 권할 수 있는 책 같다.
사실 모나드와 같은 개념은 아직 잘 와닿지는 않는다.
처음 보는 개념들이 많고 익숙하지 않아 막상 책을 다 읽고 덮으니, 실제 어떻게 코드들을 작성해야할지 엄두가 안나 다시 앞쪽을 뒤적거리게 되지만,
함수형 프로그램에 대한 흥미도 생겼고, 기존에 작성하던 코드 방식을 변경하면 더 유지보수에 유리하고 생산성이 좋을 것 같다는 생각이 든다.