함수형 프로그래밍 개념을 마스터하는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
JavaScript 개발자, 특히 코드 품질 개선 및 유지보수성 향상이 필요한 중급 이상 개발자
핵심 요약
- 불변성(Immutability): 데이터 직접 수정 금지, 대신 새로운 객체 복사
- 순수 함수(Pure Functions): 입력값만으로 결과 결정, 부작용 없음 (
function add(a, b) { return a + b; }
) - 고차함수(Higher-Order Functions): 함수를 인자/반환값으로 사용 (
numbers.map(n => n * 2)
)
섹션별 세부 요약
1. 순수 함수
- 입력값만으로 결과 결정, 동일한 입력에 동일한 출력
- 부작용 없이 상태 변경 불가
- 예:
add(2, 3)
→ 항상 5 반환
2. 불변성
- 데이터 직접 수정 대신
{ ...person, age: 26 }
형태로 복사 - 원본 데이터 보호, 버그 감소
- 예:
person.age
는 25,updatedPerson.age
는 26
3. 고차함수
map
,filter
,reduce
등 내장 메서드 활용- 함수를 인자로 전달 가능 (
n => n * 2
) - 예:
numbers.map(n => n * 2)
→[2,4,6,8,10]
4. 클로저
- 외부 스코프의 변수 참조 유지
makeCounter()
에서count
변수 기억- 예:
counter()
호출 시 1, 2, ... 증가
5. 커링 & 부분 적용
multiply(2)(5)
→ 10 반환- 함수를 단계별로 인자 전달 가능
6. 재귀
factorial(5)
→ 54321 = 120- 반복 구조 대신 함수 자체가 호출
7. reduce 활용 팁
nums.reduce((acc, curr) => acc + curr, 0)
→ 15 반환- 배열 합계 계산 시 유용
결론
- 순수 함수, 불변성, 고차함수를 적용해 코드 예측성과 유지보수성을 향상
- React, Redux, Lodash FP 등 현대 라이브러리와 호환성 높음
- 부작용 최소화와 모듈화된 설계로 대규모 애플리케이션 개발에 적합