함수형 사고 (Functional Thinking) – 닐 포드

1.
객체지향의 틀안에서 느꼈던 갈증을 해결해 준는 책. 이 책만 읽는 다면 함수형 프로그래밍이 마침내 찾아낸 유토피아 같겠지만 모든 것에는 장단점이 있는법. 모든 문제를 하나의 언어로 해결 할 필요가 없는 것처럼 하나의 패러다임 만으로 문제를 해결할 필요도 없는 것이겠지.

2.
객체지향은 매번 새로운 자료구조(상태)를 만들어내지만 이는 각 상태에 대한 별도의 조작함수를 매번 제공해야 하므로 복잡도가 높아진다. 함수형은 리스트, 맵과 같은 보편적인 자료구조를 기반으로 이를 조작할 수 있는 다양한 함수를 만드는 방식으로 접근하여 재사용이 쉽다.

3.
객체지향에서 상속으로 추상화된 한계로 인해 특정기능을 다룰 수 없게되는 경우가 얼마나 많던가, 섣부른 추상화로 인해 다시 구조를 바꾸겠다고 리펙토링을 하며 새로이 만들어낸 추상화는 또다른 한계를 결정짓곤 한다. (조엘이 말하는 허술한 추상화의 법칙) 구성(Composition)을 기반으로 한 함수형 접근 방식에서 이 문제 해결의 실마리를 보는 것 같다.

4.
함수형 접근방법이 해결한 3가지 갈증

a. 오류 처리: 예외도 맘에 들지 않았고, 리턴값처리도 맘에 들지 않았다. Either나 optional이 그 대안이 될 것
b. TDD에 쓰기 유용하다는 점: TDD에서는 다른 객체와의 연관성을 끊고 테스트 하기 위해 DI와 Mock을 사용한다. 이게 여간 번거로운 것이 아니다. Functional에서는 애초에 주입할 state가 없다. 가급적 파급효과가 없는 함수들을 작성한다.
c. 도메인 특화 언어 사용의 편리함: 간단한 배치 스크립트를 대체하려던 파이썬 스크립트 조차도 루프가들어가고 자료형이 나오면 한눈에 들어오지 않는다. 연산자 오버로딩, 상속을 사용하지 않는 다형성(이를 통한 디스패치)들을 통해 구현이 간단해진다.

계속 읽기 “함수형 사고 (Functional Thinking) – 닐 포드”