함수형 프로그래밍이란
함수형 프로그래밍(FP)은 함수를 기본 빌딩 블록으로 사용하는 패러다임입니다. 40년간 다양한 패러다임을 경험한 저로서는 FP 개념이 모든 개발자에게 유용하다고 확신합니다. 순수 FP 언어가 아니더라도 FP 개념을 적용하면 코드가 더 예측 가능하고 테스트하기 쉬워집니다.
순수 함수(Pure Function)
순수 함수는 같은 입력에 항상 같은 출력을 반환합니다. 부수 효과(side effect)가 없습니다. 외부 상태를 읽거나 변경하지 않습니다. 테스트하기 쉽고 추론하기 쉽습니다. 병렬 실행이 안전합니다. 캐싱(메모이제이션)이 가능합니다. 가능하면 함수를 순수하게 유지하세요.
불변성(Immutability)
불변 데이터는 한번 생성되면 변경되지 않습니다. 변경 대신 새로운 값을 생성합니다. 동시성 문제(race condition)를 예방합니다. 상태 변화 추적이 쉬워집니다(시간 여행 디버깅). JavaScript에서는 Object.freeze(), 스프레드 연산자를 사용합니다. Immutable.js 같은 라이브러리도 있습니다.
고차 함수(Higher-Order Functions)
고차 함수는 함수를 인자로 받거나 함수를 반환합니다. map, filter, reduce가 대표적입니다. 코드 재사용성을 높입니다. 선언적 스타일로 '무엇을' 원하는지 표현합니다. 명령형의 '어떻게' 보다 추상화 수준이 높습니다. 커링(Currying)으로 함수를 조합합니다.
FP를 적용하는 방법
상태 변경을 최소화합니다. for 루프 대신 map/filter/reduce를 사용합니다. 작은 순수 함수를 조합합니다. 부수 효과를 코드의 경계로 밀어냅니다. 함수형 라이브러리(Lodash/fp, Ramda)를 활용합니다. 점진적으로 적용하세요. 모든 코드를 FP로 작성할 필요는 없습니다.
댓글
0