자바스크립트 함수의 디자인 패턴 (Design Patterns for Functions)
자바스크립트는 함수가 일급 객체로서 강력한 기능을 갖추고 있습니다. 함수를 작성할 때, 잘 구조화된 디자인 패턴을 사용하면 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다. 이번 블로그에서는 자바스크립트 함수의 디자인 패턴을 살펴보겠습니다.
IIFE (Immediately Invoked Function Expression)
IIFE는 즉시 실행되는 함수 표현식을 의미합니다. 함수를 정의하고 즉시 실행하기 때문에 전역 스코프를 오염시키지 않고 변수의 충돌을 막을 수 있습니다.
(function() {
// 코드 작성
})();
콜백 (Callback)
콜백 패턴은 비동기 작업을 처리할 때 매우 유용한 패턴입니다. 함수의 인수로 다른 함수를 전달하여 비동기 작업의 결과를 처리할 수 있습니다.
function fetchData(callback) {
// 비동기 작업 수행
// 결과를 콜백 함수로 전달
callback(result);
}
프로미스 (Promises)
프로미스는 ES6 이후부터 추가된 기능으로, 콜백 패턴의 단점을 보완하는 패턴입니다. 비동기 작업의 결과를 나중에 처리하기 위해 프로미스 객체를 반환합니다.
function fetchData() {
return new Promise((resolve, reject) => {
// 비동기 작업 수행
// 성공시 resolve로 결과 전달
// 실패시 reject로 오류 전달
});
}
fetchData()
.then(result => {
// 비동기 작업 성공 시 처리 로직
})
.catch(error => {
// 비동기 작업 실패 시 처리 로직
});
제너레이터 (Generators)
제너레이터는 함수의 실행을 일시 중단한 후 나중에 다시 시작할 수 있는 기능을 제공합니다. yield
키워드를 사용하여 제너레이터 함수의 실행을 멈출 수 있습니다.
function* generatorFunction() {
yield 1;
yield 2;
yield 3;
}
const generator = generatorFunction();
console.log(generator.next().value); // 1
console.log(generator.next().value); // 2
console.log(generator.next().value); // 3
커링 (Currying)
커링은 다중 인수를 받는 함수를 단일 인수를 받는 함수의 체인으로 변환하는 패턴입니다. 이를 통해 함수의 재사용성과 일관성을 높일 수 있습니다.
function add(x) {
return function(y) {
return x + y;
};
}
const addFive = add(5);
console.log(addFive(3)); // 8
console.log(addFive(7)); // 12
위에서 소개한 디자인 패턴들은 자바스크립트 함수를 구조화하고 재사용성을 높이는 데에 매우 유용합니다. 익숙해지고 적절하게 활용하여 코드를 더욱 효율적이고 견고하게 개발할 수 있도록 노력해보세요.
Happy coding!