순수 함수란? (불변성과 사이드 이펙트)
면접에서 “순수 함수란 무엇인가요? 불변성과 사이드 이펙트와 연결하여 설명해 주세요.”라는 질문이 자주 나옵니다. 정의와 두 가지 핵심 특징을 정리해 보겠습니다.
순수 함수란?
같은 입력에 대해 항상 같은 출력을 반환하며, 외부의 상태를 변경하지 않고 오직 입력 값에만 의존하는 함수를 말합니다. 이는 함수의 실행이 항상 예측 가능하고 일관성 있음을 의미합니다.
특징
불변성
순수 함수는 함수 내부에서 입력 값을 변경하지 않습니다. 즉, 전달된 인자 값은 그대로 유지되며 함수 내부에서 수정되지 않습니다. 이는 함수의 외부 상태나 다른 코드에 영향을 주지 않음을 의미합니다. 불변성은 예측 가능성과 안정성을 제공하며, 디버깅과 테스트를 용이하게 만들어 줍니다.
사이드 이펙트
사이드 이펙트 : 프로그램의 실행 결과로서 함수나 연산 외부에 영향을 주는 동작을 말합니다.
순수 함수는 사이드 이펙트를 발생시키지 않습니다. 사이드 이펙트는 함수의 실행 결과로 함수 외부의 상태를 변경하거나 다른 외부 동작을 수행하는 것을 의미합니다. 예를 들어 파일을 수정하거나 데이터베이스를 갱신하는 것은 사이드 이펙트입니다. 순수 함수는 오직 입력 값에만 의존하므로 사이드 이펙트가 없어 프로그램의 예측 가능성과 모듈화를 높여 줍니다.
한 줄 요약
순수 함수는 같은 입력 → 같은 출력을 보장하며, 입력 값을 바꾸지 않고(불변성) 외부 상태도 건드리지 않는(사이드 이펙트 없음) 함수입니다. 덕분에 가독성·유지보수성·테스트 용이성·병렬화 측면에서 이점을 가집니다.