함수형 프로그래밍을 배우는 이유

입사한지 8개월쯤 되었을때 조인스 고도화 프로젝트를 진행하게 되었다. 해당 프로젝트에서 나는 일렉트론을 이용해 설치형 프로그램을 개발하게 되었다 이 프로젝트를 진행하며 느꼈던 부분은 내가 짠 코드가 생산성이 굉장히 떨어진다고 생각했다. 추가적으로 들어온 개발요건이나 수정사항들에 있어서 내가 짠 코드는 중복이 많았고, 의존성이 깊었으며 좋은코드라고 말하기 힘든 코드였다.

그래서 이 부분을 좀더 보완하고 생산성을 올리는 방식의 코드를 짜고 싶어졌고 그때 마침 내 책상에 놓여져있던 함수형프로그래밍 이라는 책을 보게 되었다 함수형 프로그래밍을 통해서 가져올수 있는 장점들을 가지고 현재 플로우에 적용을 한다면 좀더 좋은코드를 작성하지 않을까? 라는 의문을 가지게 되었다

함수형 프로그래밍의 특징

함수형 프로그래밍의 특징중 하나인 불변성을 지향하는 부분에 있어 프로그램의 검증이 쉬운 장점을 가진다 프로그래머가 예측하지 못한 시점에 변경되는 내부 상태가 없기에 예측이 가능해지면서 검증에 대해서 좀더 장점을 가진다

명령형 프로그래밍을 작성하다보면 동시성 프로그램을 설계하면서 많은 어려움을 겪는다 그런 부분에 있어서 고려할 부분이 많아지는데 함수형 프로그래밍의 경우는 영속적인 자료구조를 갖는다 개체들이 불변한 속성을 가지기 떄문에 쓰레드의 안정성을 보장하고 공유할 상태가 없어진다 동시성 프로그래밍을 많이 사용하는 플로우에서 함수형 프로그래밍을 사용한다면 더욱 좋은 생산성을 가질수 있다고 생각한다

함수형 프로그래밍을 어떤식으로?

이번에는 플로우의 파일함 관련부분을 맡아서 개선하게 되었는데 기존의 파일함의 시스템을 바꾸고 새로운 방식의 시스템으로 변경을 하는 작업을 진행하게 된다 이 부분을 진행하면서 최대한 함수형 프로그래밍적인 사고를 더해 개발을 진행해보려고 한다.

함수형 프로그래밍의 특징 부분에서 말한 특징과 장점들을 직접 느껴보고 인지하지 못한 상황이다 나는 이해력이 그렇게 좋은 편이 아니다보니 결국 해보고 직접 몸소 경험해야 필요성을 느끼는 스타일이다.

마치며

함수형 프로그래밍의 유인동 저자가 인프런에서 무료로 강의를 제공하는 부분도 있어서 함수형 프로그래밍을 공부하고자 하는 분들은 해당사이트에서 강의를 들어보는것도 좋을 것 같다

(인프런 강의) inflearn

(깃허브) github