함수형 프로그래밍 시리즈를 작성해보려고 합니다.
그 중, 기초적인 부분인 부수 효과에 대해서 알아보겠습니다.
부수 효과란?
side effect는 약물에서는 부작용으로 알려져 있습니다.
프로그래밍에서도 마찬가지로 부작용과 비슷한 의미로 사용됩니다.
부수 효과는 간단하게 제 2의 효과라고 볼 수 있습니다.
코드를 보며 설명하겠습니다.
let sideNum = 0;
function incrementNum() {
sideNum += 1;
return sideNum;
}
위와 같은 코드에서 incrementNum 함수는 sideNum 이라는 변수를 이용합니다.
다음과 같은 코드를 부수 효과가 있다라고 표현을 합니다.
이를 제거한 코드는 다음과 같습니다.
function incrementNum(num: number) {
return num + 1;
}
이전에 사용한 전역 변수가 매개변수로 변경되었습니다.
이렇게 부수 효과를 제거한 함수는 다음과 같은 장점을 가집니다.
항상 같은 입력에 같은 출력을 갖습니다.
외부의 값이 있는지 없는지 확인을 할 필요가 없습니다.
코드 작성을 집약시킬 수 있습니다. (colocation)
부수 효과는 함수형 프로그래밍에서 기본적으로 지켜야하는 이론처럼 취급됩니다.
이러한 부수 효과를 제거한 함수를 순수 함수라고 부릅니다.
순수 함수는 앞으로 함수형 프로그래밍의 전제가 되기 때문에 꼭 기억하시면 좋을 것 같습니다.
질문 사항이나 틀린 사항 있을 시 피드백 주시면 감사하겠습니다.