이건 못 참지/Side Effect

[side effect] 사이드 이펙트 ?

눙엉 2022. 1. 21. 00:16

여러 문서를 읽다 보면 side effect라는 단어를 보게 된다.

 

번역하면 부작용인데 다들 side effect는 피하라고 하는 거 보니 안 좋은 뜻인 거 같아 보이긴 한다.

 

개발에서 side effect는 의도하지 않은 (예측할 수 없는) 효과를 말한다.

 

예를 들어 함수 내부에서 함수 외부의 변수를 변하게 하는 행동을 생각하면 될 것 같다.

 

함수를 실행시켜서 내가 원하는 값을 반환해야 하는데 함수 외부의 값이 변한다면 그걸 어떻게 찾을까... 막막하다

 

함수를 만들 때 side effect가 발생하지 않는 순수 함수를 만들어야 한다.

 

같은 input 값을 받으면 항상 같은 결과 값을 return 해주도록 말이다. 그게 함수형 프로그래밍의 콘셉트이기도 하다.

 

하지만 내가 사용하는 자바스크립트는 함수형 프로그래밍 언어가 아니다.

 

JS의 this를 떠올려보자 this를 호출하는 곳에서 this가 가리키는 것이 달라진다. this에 따라 다른 결과를 낼 가능성이 생기기 때문이다.

 

side effect로 시작해서 의식의 흐름대로 이야기가 흐른 것 같다.

 

결론 : side effect는 의도하지 않은 결과이다.