Javascript 함수형 프로그래밍

·2022년 7월 4일
0

javascript

목록 보기
13/13
post-thumbnail

함수형 프로그래밍

객체 지향, 절차 지향 등과 같은 문맥을 가진 하나의 프로그래밍 패러다임으로 정의되는 일련의 코딩 접근 방식입니다. 자료 처리를 수학적 함수의 계산으로 취급하고 상태 및 데이터의 변질을 멀리하는 것에 중점을 두고 있습니다.

함수형 프로그래밍의 특징

Pure function

해당 함수에 동일한 인수 값을 전달하면 언제나 동일한 값을 반환하는 함수를 말합니다.

함수에 같은 매개변수가 반복해서 넣을 때, 동일하게 같은 값이 리턴해야하며, 함수의 실행을 통해 전체의 프로세스 과정에 영향을 미치지 않아야 합니다. 또한 함수 내부에서, 인자의 값을 변화시키거나, 상태를 변경하거나, 외부에 부수 효과를 주지 않아야 합니다.
순수 함수를 사용한 코드는 모듈화 혹은 독립성이 높아, 가독성 및 디버깅이 간편해지며, 데이터를 변질을 최소화 하기 때문에 프로그램 안정성에 긍정적인 영향을 미칩니다.

immutable

함수형 프로그래밍은 수학의 함수를 프로그래밍의 세계로 가져온 모델입니다. 기존 프로그래밍의 세계에는 무언가를 저장하거나, 변경하고, 해당 값이 읽어오는 state 라는 개념이 존재하였으나, 순수 함수는 이러한 개념을 멀리하기 때문에 외부의 무언가에 절대 영향을 받지 않고 독립적으로 존재해야 합니다. 그렇기 때문에 순수 함수는 반드시 외부 상태에 영향을 받거나 주지 않아야 한다는 규칙을 가지게 되죠. 이처럼 상태를 변화시키지 않는 것을 immutable (불변성) 이라고 합니다.

함수형 프로그래밍이 추천되는 이유??

함수나 메서드에 의해서 데이터가 변질된다는 것은 개발자가 예상하지 못하는 에러가 발생할 수 있다는 의미입니다. 따라서 예외 상황을 최소화 하기 위해서는 순수함수 형태로 작업을 하는 것을 권장하는 것입니다.

또한 비순수함수, 불순 함수를 쓰지 말라는 얘기 역시 아닙니다. 프로그래밍을 하다보면 부수효과가 필요한 경우도 간혹 있습니다. 상황에 따라 순수 혹은 비 순수함수를 적절히 적용시키는 것이 중요합니다.

함수형 프로그래밍에서 쓰면 안되는 것들

  • 기존의 값을 변화시킬 수 있는 if문, 반복문, 스위치문
  • var 혹은 let을 통해 사용할 수 있는 재선언, 재할당
  • void function
  • 새로운 키 생성, 객체 할당
  • 기존의 배열, 객체를 변화시키는 메서드

위의 값들을 사용하지 않고 그렇다면 어떻게 코딩을 할까요??

  • 재귀 (이전 함수에서 반환된 값을 가지고 다시금 다음 함수에 적용), High-Order-Function, 메서드 체이닝
  • 기존의 값을 변화시키지 않은 체 새로운 값을 반환하는 메서드 (자바스크립트의 경우 map, filter, slice)
profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글