[JavaScript] 프론트엔드 개발자를 위한 함수형 프로그래밍(functional programming)
-
반응형
a programer generated by AI
JavaScript 개발자를 위한 함수형 프로그래밍
JavaScript는 다양한 스타일로 코드를 작성할 수 있는 유연한 언어입니다. 명령형(imperative), 객체 지향(object-oriented), 그리고 함수형(functional) 프로그래밍 스타일을 모두 지원하며, 각각의 스타일은 문제를 해결하는 방식이 다릅니다.
이 중 함수형 프로그래밍은 진입 장벽이 높다고 느껴질 수 있지만, 사실 JavaScript를 사용하면서 이미 함수형 스타일을 활용하고 있을 가능성이 큽니다. 다만, 함수형 프로그래밍은 낯선 용어와 개념 때문에 어렵게 느껴질 수 있습니다. 이 글에서는 함수형 프로그래밍을 실용적인 방식으로 소개하여, 지금 당장 코드에 적용할 수 있도록 도와드리겠습니다.
함수형 프로그래밍이란?
객체 지향 프로그래밍(OOP)이 객체를 중심으로 코드를 구조화하는 것처럼, 함수형 프로그래밍은 함수를 중심으로 구조화합니다. 이를 위해 몇 가지 중요한 개념을 따릅니다.
1. 함수는 "일급 시민(First-Class Citizen)"이다.
JavaScript에서 함수는 변수에 할당할 수 있고, 다른 함수의 인자로 전달되거나, 함수에서 반환될 수도 있습니다.
함수형 코드의 장점: ✅ 더 선언적 → "무엇을" 할 것인지 명확하게 표현됨 ✅ 단계가 명확하게 분리됨 → filter, map, reduce 각각의 역할이 뚜렷함 ✅ 재사용 가능성이 높음 → 각 함수가 독립적이라 필요에 따라 쉽게 변경 가능
이처럼 함수형 스타일을 적용하면 코드의 가독성과 유지보수성이 크게 향상됩니다.
실용적인 함수형 패턴
1. 데이터 불변성 유지
객체와 배열을 변경하는 것을 피하고, 새 데이터를 생성하는 방식을 사용하면 예기치 않은 부작용을 방지할 수 있습니다. 라이브러리로 immutable.js나 immer.js를 사용할 수도 있지만, Object.freeze() 또는 getter를 활용하는 것도 좋은 방법입니다.
2. 단일 책임 원칙을 적용한 함수 분리
각 함수는 단일 책임(Single Responsibility)을 가지도록 설계해야 합니다. 함수가 너무 많은 일을 하고 있다면, 여러 개의 작은 함수로 분리하는 것이 좋습니다.
3. 고차 함수(Higher-Order Functions) 활용
고차 함수란 함수를 인자로 받거나, 함수를 반환하는 함수를 의미합니다. JavaScript의 map, filter, reduce 같은 배열 메서드가 대표적인 예입니다.