본문 바로가기
일상/면접준비

함수형 프로그래밍과 순수함수 이해하기

by 땅콩둘기 2022. 5. 2.
반응형

함수형 프로그래밍이란?

 성공적인 프로그래밍을 위해 부수 효과를 미워하고 조합성을 강조하는 프로그래밍 패러다임

 

* 부수효과를 미워한다 -> 순수함수를 만든다.

  •     순수함수 : 들어온 인자가 같으면 결과가 항상같은 함수
  •     부수효과 : 리턴값으로 결과를 만드는것 외에 들어온 인자를 직접 변경하는 등 외부에 영향을 주는것

* 조합성을 강조한다 -> 모듈화 수준을 높인다.

  • 모듈화 수준이 높다 : 성공적인 프로그래밍으로 생산성이 높고 팀웍에도 좋고 기획변경에도 대응하기 좋다.

순수함수

👉 받은 인자 외에 다른 외부의 상태에 영향을 끼치않고 리턴값 외에는 외부와 소통이 없다.

👉 순수함수로 함수형 프로그래밍을 할 경우 오류를 줄이고 안정성을 높인다.

 

올바른 예

1. 항상 동일한 인자를 주면 동일한 결과를 리턴

function add(a,b) {

  return a+b;

}

 

2. 객체를 처리한 경우

함수형프로그래밍은 순수함수를 이용해 값을 변형하거나 다룰때 인자의 값을 변형하지않고 외부의 상태를 변화시키지않는 프로그래밍이다.

그렇다면 함수형 프로그래밍에서는 객체의 값들을 변경할 수 없고 객체를 다룰수 없는가? X 

    -> 원래 있던 값은 그대로 두고 새로운 값을 만들면서 복사해서 원하는 부분의 값이 변형된 객체를 리턴한다.

//순수함수

var obj1 = {var : 10};

function add5(obj,b){

return {val : obj.val + b};

}

 

순수함수가 아닌

1. 동일한 인자를 주었을때 상황에 따라 결과가 달라지는 함수

     -> c의값이 변경될 수 있어서 순수함수가 아니다.

var c=20;

function add2(a,b){

 a+b+c;

}

 

2. 부수효과가 발생하는 경우

    -> 함수 밖의 변수인 c에 영향을 줄 수 있다.

var c = 20;

function add3(a,b ) {

c=b; 

return a+b;

}

 

 

중요한 특징

평가시점이 중요하지않아야한다! 

   ->  결과가 항상 동일하므로 안정하고 다루기 쉬워져 조합성이 올라가게 된다.

 

 

 

 

* 인프런 자바스크립트로 알아보는 함수형 프로그래밍 강의를 듣고 정리한 내용입니다.

반응형

'일상 > 면접준비' 카테고리의 다른 글

일급함수와 add_maker 이해하기  (0) 2022.05.02
개발자 면접준비 - 참고하기 좋은 GitHub  (1) 2022.03.23

댓글