함수형 프로그래밍이란?
함수형 프로그래밍(Function Programming)은 프로그램의 구성 요소를 순수 함수로 작성하고, 상태와 가변 데이터를 최소화하며, 데이터를 변환하는 방식을 강조하는 프로그래밍 패러다임입니다. 이는 코드의 가독성을 높이고, 오류를 줄이며, 테스트와 유지보수를 용이하게 만듭니다.
순수 함수
순수 함수(Pure Function)는 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태를 변경하지 않는 함수입니다.
예제
function add(a, b) {
return a + b;
}
console.log(add(2, 3)); // 5
불변성
불변성(Immutability)은 데이터가 변경되지 않음을 의미합니다. 함수형 프로그래밍에서는 데이터의 불변성을 유지하는 것이 중요합니다.
예제
const originalArray = [1, 2, 3];
const newArray = originalArray.concat([4, 5]);
console.log(originalArray); // [1, 2, 3]
console.log(newArray); // [1, 2, 3, 4, 5]
고차 함수
고차 함수(Higher-Order Function)는 함수를 인수로 받거나, 함수를 반환하는 함수입니다. 이는 코드의 재사용성을 높이고, 가독성을 개선하는 데 유용합니다.
예제
function createMultiplier(multiplier) {
return function(value) {
return value * multiplier;
};
}
const double = createMultiplier(2);
console.log(double(5)); // 10
순수 함수의 장점
- 예측 가능성: 동일한 입력에 대해 항상 동일한 출력을 반환하여 코드의 예측 가능성을 높입니다.
- 테스트 용이성: 외부 상태에 의존하지 않기 때문에 테스트가 용이합니다.
- 병렬 처리: 부작용이 없기 때문에 병렬 처리가 가능합니다.
고차 함수의 장점
- 코드 재사용성: 동일한 로직을 여러 곳에서 재사용할 수 있습니다.
- 코드 가독성: 코드를 더 읽기 쉽고 이해하기 쉽게 만듭니다.
- 추상화: 반복적인 작업을 추상화하여 코드의 중복을 줄일 수 있습니다.
함수형 프로그래밍의 기본 개념
함수 합성
함수 합성(Function Composition)은 작은 함수들을 결합하여 더 복잡한 함수를 만드는 것입니다.
예제
function add(a, b) {
return a + b;
}
function square(x) {
return x * x;
}
const addAndSquare = (a, b) => square(add(a, b));
console.log(addAndSquare(2, 3)); // 25
커링
커링(Currying)은 여러 인수를 받는 함수를 하나의 인수를 받는 함수로 변환하는 기법입니다.
예제
function add(a) {
return function(b) {
return a + b;
};
}
const add5 = add(5);
console.log(add5(3)); // 8
함수형 프로그래밍 라이브러리
함수형 프로그래밍을 더 쉽게 할 수 있도록 도와주는 라이브러리가 있습니다. 대표적으로 Lodash와 Ramda가 있습니다.
Lodash 사용 예제
const _ = require('lodash');
const numbers = [1, 2, 3, 4, 5];
const doubled = _.map(numbers, n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]
Ramda 사용 예제
const R = require('ramda');
const add = (a, b) => a + b;
const add5 = R.curry(add)(5);
console.log(add5(3)); // 8
함수형 프로그래밍의 장점
- 코드의 가독성: 순수 함수와 불변성으로 인해 코드가 더 읽기 쉽고 이해하기 쉬워집니다.
- 테스트 용이성: 함수가 외부 상태에 의존하지 않기 때문에 단위 테스트가 용이합니다.
- 병렬 처리: 부작용이 없기 때문에 병렬 처리가 가능하며, 이는 성능을 향상시킬 수 있습니다.
함수형 프로그래밍의 단점
- 성능: 모든 데이터를 불변으로 처리하기 때문에 성능에 영향을 미칠 수 있습니다.
- 학습 곡선: 함수형 프로그래밍의 개념과 기법을 이해하는 데 시간이 걸릴 수 있습니다.
결론
함수형 프로그래밍은 순수 함수, 불변성, 고차 함수 등의 개념을 통해 코드의 재사용성과 가독성을 높이고, 오류를 줄이는 프로그래밍 패러다임입니다. 이번 글에서는 함수형 프로그래밍의 기본 개념과 장점, 단점에 대해 배웠습니다. 다음 글에서는 객체 지향 프로그래밍의 기본 개념에 대해 알아보겠습니다.
다음 글에서 만나요!
'JavaScript 문법 시리즈' 카테고리의 다른 글
[JavaScript 문법] 19일차: 객체 지향 프로그래밍 심화 (0) | 2024.08.19 |
---|---|
[JavaScript 문법] 18일차: 객체 지향 프로그래밍 (0) | 2024.08.18 |
[JavaScript 문법] 16일차: 고차 함수 (0) | 2024.08.16 |
[JavaScript 문법] 15일차: this 키워드 이해하기 (0) | 2024.08.15 |
[JavaScript 문법] 14일차: 모듈 (1) | 2024.08.14 |