순수 함수의 조건
1. 동일한 입력이 주어지면 항상 동일한 출력을 반환한다.
- 함수실행 중에 변경되는 상태 또는 데이터에 종속되지 않는다. 인자에만 의존해야 한다.
2. 사이드 이펙트(side effect)가 없다.
- 사이드 이펙트(side effect)란 함수의 호출로 인해 함수 외부에 영향을 주는 것을 의미한다.
순수 함수의 장점
- 동일한 인자가 주어졌을 때 항상 같은 결과를 반환하므로, 테스트하기가 쉽다.
- 순수 함수를 사용하면 특정 함수가 다른 함수에 미치는 예기치 못한 영향을 최소화할 수 있다.
- 함수가 외부의 상태를 변경하지 않으므로, 함수를 호출했을 때 어떤 결과값을 리턴할지 예측하기 쉽다.
- 부작용이 없는 함수는 다른 함수에서도 자유롭게 사용될 수 있으므로, 코드 재사용성이 높아진다.
- 순수함수는 컨텍스트와 관계없이 동작하기 때문에 가독성이 좋다. 단지 필요한 값들을 매개변수로 받을 뿐이며, 어플리케이션의 상태를 필요로 하지 않는다.
불변성
불변성(Immutability)이란 객체의 상태가 변경되지 않는 것을 의미한다. 순수 함수는 외부의 상태를 변경하지 않으므로, 순수 함수를 사용하면 불변성을 유지할 수 있다. 불변성을 유지하면, 객체의 상태가 변경되는 것을 막아 예측 가능한 코드를 작성할 수 있다.
정리
순수함수란 동일한 입력이 주어지면 항상 동일한 출력을 반환하며 사이드 이펙트가 없는 함수를 말한다.
여기서 사이드 이펙트란 함수의 호출로 인해 함수 외부에 영향을 주는 것을 의미한다.
따라서 순수함수는 함수 외부의 상태를 변경하지 않으므로, 순수 함수를 사용하면 불변성을 유지할 수 있다.
또한 불변성이란 객체의 상태가 변경되지 않는 것을 의미하는데,
불변성을 유지하면 객체의 상태가 변경되는 것을 막아 예측 가능한 코드를 작성할 수 있다.