19.08.16 23:47 작성
·
8.6K
답변 2
0
2019. 08. 20. 21:15
아하! 출력값을 산출할때 출력 과정에서 전혀 영향을 미치지 않는 작업들을 side effect라고 부르는 것이었군요! 답변 덕에 조금은 감이 잡히게 되었습니다. 좋은 강의와 함께 좋은 답변 감사드립니다~~
0
2019. 08. 19. 13:00
안녕하세요 dongjun6570님.
먼저 Side Effect 는 사용하는 곳에 따라 다양한 의미를 가지고 있다는 걸 말씀드리고 싶습니다.
일반적으로 사이드 이펙트라는 말을 할 때는 '의도하지 않은 결과'를 의미합니다. 어떤 작업의 결과로 예상하지 못한 부수적인 효과가 나온거죠. 반드시 해로운 효과만을 이야기 하지는 않습니다. 예를 들어 고혈압 약을 먹었는데 머리 숱이 풍성해 진 것도 고혈압약의 Side Effect 죠.
코딩에서도 다양한 의미를 가지고 있으나 여기서는 우리 동영상 강의에 나온 의미만을 두고 본다면,
함수를 입력값에 대해 일정한 출력을 하는 것으로 가정할 때, 출력값에 영향을 미치지 않는 모든 작업들을 side effect 라고 부른다는 겁니다.
바보같은 예지만, 두 개의 정수를 받아서 곱한 결과값을 리턴하는 multiplier(a:Int, b:Int) -> Int 라는 함수가 있는데, 이 함수 내부에서 계산 기록을 로그로 남긴다거나, 네트워크에 전송한다면 이런 작업들은 side effect 인 거죠.
이런 경우, side effect를 함수 이름에 넣어서 알아볼 수 있도록 하던지, 아예 함수 이름을 분리하는 게 좋겠죠.
도움이 되었길 바랍니다.