순수함수(Pure Function)란?

0

개념

목록 보기
1/1

순수함수의 조건

다음의 두 가지 조건을 만족하는 함수를 말합니다.

  1. 동일한 인자에 대해 항상 동일한 값을 반환합니다. 즉, 함수가 수행될 때 인자값 외에 다른 외부 상태나 변수에 의해 영향을 받지 않습니다.
  2. 함수가 수행되는 동안 인자나 외부 상태를 변경하지 않습니다. 즉, 함수가 호출되면 인자값을 받아 연산을 수행하고 결과값을 반환하며, 이때 인자값이나 외부 상태를 변경하지 않습니다.

순수함수의 장점

함수의 예측가능성을 높인다

순수함수는 함수형 프로그래밍에서 중요한 개념 중 하나로, 부작용(Side Effect)이 없고 안정적인 동작을 보장하기 때문에 코드의 테스트, 추론, 병렬 처리 등을 쉽게 할 수 있습니다. 또한, 순수함수는 같은 인자값에 대해 항상 같은 결과값을 반환하기 때문에 캐싱이나 메모이제이션 등을 이용하여 성능을 개선할 수 있습니다.

순수함수의 예시

다음은 순수함수의 예시입니다.

function add(a, b) {
  return a + b;
}

console.log(add(2, 3)); // 5
console.log(add(2, 3)); // 5
console.log(add(2, 3)); // 5

이 함수는 항상 동일한 인자에 대해 같은 결과값을 반환하며, 인자나 외부 상태를 변경하지 않습니다. 따라서 이 함수는 순수함수입니다.

그렇다면, 반대로 순수함수가 아닌 경우는 무엇일지 궁금했습니다!

순수함수가 아닌 경우

부작용(Side Effect)이 발생하는 함수

순수함수가 아닌 경우는, 부작용(Side Effect)이 발생하는 함수입니다. 부작용이란 함수 호출로 인해 함수 외부의 상태가 변경되는 것을 말합니다. 다음은 순수함수가 아닌 예시입니다.

let x = 0;
function impureAdd(a) {
  x++;
  return a + x;
}

console.log(impureAdd(2)); // 3
console.log(impureAdd(2)); // 4
console.log(impureAdd(2)); // 5

이 함수는 함수 호출로 인해 외부 상태인 변수 x가 변경되고, 이는 다음 함수 호출에 영향을 미칩니다. 따라서 이 함수는 순수함수가 아닙니다.

순수함수가 아닌 경우, 코드의 복잡도와 유지보수성이 떨어지고, 함수 호출 결과를 예측하기 어렵기 때문에 테스트가 어렵습니다. 또한, 함수 호출로 인해 발생하는 부작용이 예기치 않은 결과를 초래할 수 있기 때문에 주의가 필요합니다.

profile
안녕하세요😄 비전공자의 웹개발자 도전기를 쓰는 중입니다! 수정/보완할 부분이 있다면 피드백 언제든 환영입니다!

0개의 댓글