객체지향 프로그래밍은 움직이는 부분을 캡슐화하여 코드 이해를 돕고, 함수형 프로그래밍은 움직이는 부분을 최소화하여 코드 이해를 돕는다 - 함수형 사고
- 함수형 프로그래밍이란
- 함수를 하나의 변수로 만드는 것
- 순수함수를 작성하는 것, 숨겨진 입력이나 출력을 최대한 제거하여 가능한 코드를 입력과 츌력의 관계를 기술하게끔 한다.
-
부작용을 최소화하고 복잡성을 낮춘다.
- 메소드들을 레고처럼 사용?
- 특징
- 입출력이 순수해야 한다(순수함수)
- 하나 이상의 인자를 받고, 받은 인자를 처리하여 반드시 결과물을 둘려주어야한다. 받은 인자만으로 결과물을 내어야한다.
- 부작용(부산물, side effect)이 없어야힌다.
- 함수의 실행이 외부에 영향을 끼치지 않는 함수를 뜻한다. 스레드는 안전하고 병렬적 계산가능, 코드가 간결
- 함수와 데이터를 중점으로 생각한다.
- 입출력이 순수해야 한다(순수함수)
- 장점
- 코드의 동작을 추론하기 쉽다.
- 쓰레드간에 객체를 안전하게 공유할 수 있다.
- 모듈성과 재사용률을 높일 수 있다.
- 테스트하기 쉽다.
- 단점
- 기본적으로 추상화 단계가 지나치게 높아져서 읽기 어렵다.
- 기존의 자료구조를 상당히 들어엎어야 한다.
- 함수형 언어의 장점인 병렬/분산 프로그래밍 또한 실제로는 기존 명령형 언어들의 기능을 가지고도 구현할 수 있다
- 요약
함수를 하나의 변수로 만드는 것, 부작용을 최소화하고 복잡성을 낮춘다 코드의 동작을 추론하기 쉽고 쓰레드간에 객체를 안전하게 공유할 수 있으며 모듈성과 재사용률을 높일 수 있다. 하지만 기본적으로 추상화 단계가 지나치게 높아져서 읽기 어렵다.