서론
처음 자바스크립트에 입문할 때는 파이썬에서 했던 것처럼 반복문을 주로 썼었다. 그러다 다른 사람들의 코드를 보며 반복문이 거의 존재하지 않고 대신 map, filter, reduce같은 고차함수를 주로 사용함을 알 수 있었다. 이 글에서는 자바스크립트에서 반복문 대신 고차함수를 써야하는 이유에 대해 알아보고자 한다.
고차함수란
고차 함수는 다른 함수를 매개변수로 받거나 함수를 결과로 반환하는 함수이다. 고차 함수는 수학에서 쓰이는 개념이며 자바스크립트에서 고차함수에는 map, reduce, filter같은 함수가 있다. 자바스크립트에서 함수는 일급 객체로 변수에 할당되고 인수에 전달될 수 있고 다른 함수들의 return값으로 쓰일 수 있다. 고차함수는 외부 상태의 변경이나 가변 데이터를 피하고, 불변성을 지향하는 함수형 프로그래밍에 기반을 두고 있다.
고차함수를 쓰는 이유
가독성과 유지보수성
먼저 고차함수를 사용하면 가독성과 유지보수성을 높힐수 있다. 왜냐하면 반복문을 사용하면 코드의 복잡함이 늘어나고, 코드가 복잡해지면 코드를 읽고 수정하기 어려워지기 때문이다. 고차함수를 통해 코드를 더 정확하고 의도를 잘 나타낼 수 있다.
// 반복문 사용
let total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
// 고차함수 사용
console.log(sum(range(1, 10)));
해당 예제는 반복문과 고차함수를 썻을때를 각각 비교한 코드이다. 고차함수를 사용하면 코드가 간결해지고 읽기 쉬워짐을 알 수 있다.
캡슐화와 추상화
조건문과 반복문을 과도하게 사용하면 다양한 조건에 따라 동작이 변경되는 코드가 함수 내부에 섞여 혼란을 가중시킬 수 있다. 이는 함수가 하나의 기능만 수행하는 원칙을 위반하고, 코드의 재사용성을 저하시킬 수 있다. 고차 함수를 사용하여 각 함수가 단일 기능에 집중하도록 함으로써, 코드를 더 명확하고 재사용 가능하게 만들 수 있습니다.
따라서 고차 함수는 추상화를 가능하게 한다. 추상화란 함수의 구현 세부 사항을 숨기고 필요한 기능만을 노출하는 것이다. 이러한 캡슐화는 보안을 강화할 뿐만 아니라 복잡한 기능의 사용을 단순화하여 코드의 가독성과 재사용성을 높힐수 있다. 고차 함수를 통해 기능을 분리하고 캡슐화할 수 있다.
순수 함수
함수형 프로그래밍 원칙 중 하나는 순수함수를 사용하는 것이다. 고차함수를 통해 이 원칙을 쉽게 지킬 수 있다. 물론 고차함수와 순수함수는 서로 다른 개념이다. 순수함수는 동일한 입력에 대해 동일한 결과를 출력하는 함수이기 때문이다. 반복문과 조건문으로도 순수함수를 구현할 수 있으나 자바스크립트의 map, filter, reduce같은 함수들은 고차함수이며 자체적으로 순수함수이기에 콜백함수도 순수함수라면 순수함수로 동작하기에 순수함수를 쉽게 사용할 수 있다. 이를 통해 side effect를 억제하여 오류를 피하고 프로그램의 안정성을 높힐 수 있다.
'JS' 카테고리의 다른 글
[JS] Javascript의 프로토타입과 상속: 개념과 동작 이해 (0) | 2024.01.12 |
---|---|
[JS] Javascript에서의 Closures (1) | 2024.01.11 |
[JS] Javascript에서의 this (1) | 2024.01.09 |
[JS] 클린코드를 위해 반복문과 조건문 줄이기(feat: 들여쓰기) (0) | 2024.01.07 |
API 응답과 빈 값: HTTP 상태 코드 200과 204 그리고 404 간의 선택 (0) | 2024.01.03 |