ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래밍] 순수함수
    기타 2021. 5. 23. 18:26
    반응형

    리액트 , 리덕스 , 함수형 프로그래밍 등등 공부하다가 보면 side effect 니 뭐니 immutable 몇가지 개념들과 함께 순수함수에 대한 이야기들이 나온다.

    그냥 동일한 입력값은 동일한 출력값을 내는 함수를 순수함수 라고 알고 있는데 좀더 자세히 알아보고 왜 필요로 하는지 알아보자

     

    순수함수의 정의 와 특징들

    • 동일입력값 > 동일출력값
    • 함수형 프로그래밍의 기반
    • side-effect 가 없다.
    • 공유된 상태로부터  기인한 버그에 면역이 있다.
    • 바깥상태로부터 독립적이다.
    • 리팩토링 하기 쉽다.

     

    특징들은 그러려니 하고 side-effect 와 함수형프로그래밍 은 어떤건지 알아보자

    함수형 프로그래밍

    일단 프로그래밍 패러다임중 하나다.

    예를 들어 객체지향형 프로그래밍 절차적 프로그래밍 같은

    근데 이거는 다음글에 따로 정리를 해보자...ㅎㅎㅎ

     

    다시 side-effect 의 정의를 보자 

    "값을 내는 것 이외에 어떤 상태나 관찰 가능한 상호 작용이 발생하는 것"

    >순수함수는 side-effect 가 없다고 했으니까 함수밖과 상호작용 하지 않는다 라고 생각하면 된다.

    >한단계 더 구체적으로 들어가면 함수바깥의 상태가 변한다고해서 함수의 작용에 달라지는 점이 없고

    그 반대로 함수가 실행된다고 해서 바깥의 상태를 변화시키지도 않는 > 상호작용이 없는 > 사이드 이펙트가 없다.

     

    이러한 특징들은 어떤 장점이 있을까?

    좀더 예측가능해지고

    독립적 이기 때문에 테스트 하는 범위가 한정적일수 있다. 하나의 함수가 독립적이지 않고 바깥의 상태와 유기적으로 움직인다면 테스트 범위가 넓어지는건 당연하다. > 테스트하기 쉽다.

     

    React 에서의 순수함수

    리액트의 컴포넌트는 props 에 대하여 순수함수처럼 동작한다.

    props 는 부모에게서 물려 받은 값이고 우리는 이값을 변경하면서 사용하지 않는다.

    변경이 필요한 데이터는 state 로 관리한다.

     

    Redux 에서의 순수함수

    reducer는 state 를 변화시킬때 수정하지 않는다 state 를 바꿔놓는다. 즉 원본값을 토대로 새로운 값을 넣어놓지 원래 데이터를 수정하지 않는다.

    redux 에서 변경을 감지할때 값을 비교하는게 아니라 참조된 주소를 확인하기 때문이다.

    왜냐하면 값을 하나하나 비교하는 deep 카피 보다 주소만 비교하는 게 빠르니까

     

     

     

     

     

     

     

     

     

     

     

     

    '기타' 카테고리의 다른 글

    [redux] 리덕스 타입스크립트랑 같이 써보기  (0) 2021.05.28
    [정규표현식]알아보기(2)  (0) 2021.05.26
    [cs] url 입력시 일어나는 일  (0) 2021.05.18
    [정규표현식] 알아보기(1)  (0) 2021.05.12
    [code & css] noteapp  (0) 2021.05.10
Designed by Tistory.