자바스크립트로 알아보는 함수형 프로그래밍 정리노트 #1

2019. 9. 15. 17:54Programming/JavaScript

반응형

이 글은 인프런에서 게재되어있는, 유인동 님의 자바스크립트로 알아보는 함수형 프로그래밍을 수강하면서 정리한 노트입니다. 제가 잘못 이해하거나 정리한 내용이 있다면 댓글로 알려주세요. 확인하는대로 수정하도록 하겠습니다. :)

성공적인 프로그래밍

  • 모든 프로그래밍 패러다임은 성공적인 프로그래밍을 위해 존재한다. 이는 함수형 프로그래밍도 마찬가지이다. 그렇다면 좋은 프로그램이란 무엇일까? 바로 사용성, 성능, 확장성, 기획 변경에 대한 대응력이 좋은 프로그램을 좋은 프로그램이라고 한다. 이러한 좋은 프로그램을 효율적이고 생산적으로 만들어내는 것이 바로 성공적인 프로그래밍이다.
  • 함수형 프로그래밍은 성공적인 프로그래밍을 위해 부수 효과를 미워하고, 조합성을 강조하는 프로그래밍 패러다임이다.
    • 순수 함수를 만든다. 순수 함수란, 들어온 인자가 같을 때 항상 동일한 결과를 반환하는 함수를 일컫는다. 또한, 순수 함수는 리턴값 이외에 외부의 상태에 영향을 끼치지 않는다. 예를 들어서 다음과 같이 순수 함수 f의 인자로 객체 p가 주어졌을 때, fp의 내용을 변경하지 않는다. p의 내용을 참조하여 새로운 객체를 생성한 뒤, 이를 반환하게 된다.
    • var p = {value:10};
      function f(p) {
         return {value: p.value+10};
      }

      순수 함수 f는 인자로 전달된 p의 값을 직접 변경하지 않고, p의 value값을 참조하여 새로운 객체를 반환하고 있다.
      순수 함수는 이런 식으로 외부의 값에 영향을 끼치지 않는다.

    • 조합성을 강조하여 모듈화 수준을 높인다. 순수 함수의 조합을 통해서 모듈화 수준을 높이게 되면, 오류는 적고 안정성이 높은 프로그램을 작성할 수 있게 된다. 순수 함수는 인자가 동일할 경우 언제나 결과값이 같기 때문에, 평가 시점을 개발자가 다룰 수 있기 때문이다. 그렇기 때문에 함수를 인자로 넘기거나, 함수 내에서 다른 함수를 호출하는(평가하는) 방식으로 조합성을 높일 수 있다. 이를 통해 다양한 로직을 작성할 수 있게 된다.
    • 자바 스크립트에서는 함수가 일급 객체(First Class)이다. 일급 객체는 다음과 같은 특성을 지닌다.
      • 리터럴에 의해 생성된다.
      • 변수나 배열의 요소, 객체의 프로퍼티 등에 할당이 가능하다.
      • 함수의 인자로 전달이 가능하다.
      • 함수의 리턴 값으로 반환이 가능하다.
      • 동적으로 프로퍼티를 생성하거나, 할당하는 게 가능하다.

참고:
자바스크립트로 알아보는 함수형 프로그래밍 #1, 인프런
함수는 일급 객체이다, by webclub.tistory.com

반응형