[JS] 함수형 패러다임

개구링·2021년 8월 17일
0

# 함수형 프로그래밍

함수형 패러다임

프로그램은 순차, 분기, 반복, 참조로 구성된다

패러다임은 위 4가지 요소를 어떻게 이용할 것인가를 다룬다.

객체지향 VS 함수형

  • 객체지향 추상화의 최소단위가 객체인 것처럼 함수형은 함수가 최소 단위
  • 함수 단위로 나눠지므로 재사용성이 높다.
  • 불변성을 지향하기에 동작을 예측하기 쉽고 사이드 이펙트를 방지한다.
    • 사이드 이펙트를 방지한다는 것은 동시성 문제도 해결된다는 의미
  • 객체지향은 제어 흐름의 간접적인 전환에 부과되는 규율
  • 함수형은 변수할당에 부과되는 규율

# 함수형 프로그래밍의 장점과 단점

  • 상태가 없기 때문에 사이드 이펙트가 없다.

    ⚠️ 상태를 조작할 수 없으므로 메모리를 더 사용하는 방법 등을 사용할 수 밖에 없다.

  • 재사용성이 높다

    ⚠️ 이를 위해 함수를 잘게 쪼개다보면 오히려 더 복잡해질 수 있다.

  • 코드가 짧고 간결하다.

    ⚠️ 많은 숙련도를 요구한다.


# 선언형 프로그래밍

기존 명령형 프로그래밍 = Control Flow

문제를 어떻게 해결해야 하는지 컴퓨터에게 명령을 내리는 방법

let a = [1, 2, 3, 4, 5];
for(let i = 0; i < 5; i += 1) {
	if(a[i] % 2 === 0) console.log(a[i]);
}

선언형 프로그래밍 = Data Flow

무엇을 해결해야 할지에 집중하고 해결 방법은 컴퓨터에게 위임하는 방법
- 함수형 프로그래밍을 만났을 때 극대화
⇒ 데이터 제어없이 필요한 함수만 조합하여 해결 가능해짐

[1, 2, 3, 4, 5]
	.filter((item) => item % 2 === 0)
	.forEach((item) => console.log(item));

⇒ 사고방식의 차이!


# 멀티 패러다임

  • 자바스크립트는 멀티 패러다임이 가능!
  • 굳이 객체지향과 함수형으로 나눌 필요 없이 둘 다 쓰자!

📚 추천하는 책!
함수형 사고

profile
기록을 취미로

0개의 댓글