• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

side effect에 대해서 조금 더 자세히 설명해주실 수 있으신가요?

19.08.16 23:47 작성 조회수 6.75k

0

side effect에 대해서 흐릿하게만 감이 잡히지 명쾌하게 머릿속에 그려지지가 않습니다. 조금 더 자세하게, 예와 같이 들어주시면 감사할것 같습니다.

답변 2

·

답변을 작성해보세요.

0

dongjun6570님의 프로필

dongjun6570

질문자

19.08.20 21:15

아하! 출력값을 산출할때 출력 과정에서 전혀 영향을 미치지 않는 작업들을 side effect라고 부르는 것이었군요! 답변 덕에 조금은 감이 잡히게 되었습니다. 좋은 강의와 함께 좋은 답변 감사드립니다~~

0

안녕하세요 dongjun6570님. 

 

먼저 Side Effect 는 사용하는 곳에 따라 다양한 의미를 가지고 있다는 걸 말씀드리고 싶습니다.

일반적으로 사이드 이펙트라는 말을 할 때는 '의도하지 않은 결과'를 의미합니다. 어떤 작업의 결과로 예상하지 못한 부수적인 효과가 나온거죠. 반드시 해로운 효과만을 이야기 하지는 않습니다. 예를 들어 고혈압 약을 먹었는데 머리 숱이 풍성해 진 것도 고혈압약의 Side Effect 죠.

코딩에서도 다양한 의미를 가지고 있으나 여기서는 우리 동영상 강의에 나온 의미만을 두고 본다면, 

함수를 입력값에 대해 일정한 출력을 하는 것으로 가정할 때, 출력값에 영향을 미치지 않는 모든 작업들을 side effect 라고 부른다는 겁니다.

바보같은 예지만, 두 개의 정수를 받아서 곱한 결과값을 리턴하는 multiplier(a:Int, b:Int) -> Int 라는 함수가 있는데, 이 함수 내부에서 계산 기록을 로그로 남긴다거나, 네트워크에 전송한다면 이런 작업들은 side effect 인 거죠. 

이런 경우, side effect를 함수 이름에 넣어서 알아볼 수 있도록 하던지, 아예 함수 이름을 분리하는 게 좋겠죠.

 

도움이 되었길 바랍니다.