나만보는개발공부블로그

FP & OOP 본문

Javascript&Typescript

FP & OOP

alexrider94 2021. 2. 22. 23:29

Object Oriented Programming 

- 장점

1. 객체의 기본개념을 이해하기 쉽고 메서드 호출의 의미를 해석하기 쉽다.

2. Declaritive보다는 imperative하다. -> 컴퓨터가 따라야할 간단한 설명서처럼 읽는다.

 

- 단점

1. 일반적으로 shared State에 의존성이 있다.

2. 객체와 동작들은 일반적으로 같은 entity에 묶여있고 임의의 함수에 의해 접근될 수 있으며 그게 에러를 만들어낼 수 있다.

 

 

Functional Programming

- 장점

1. 여러가지 함수들이 같은 자원에 대해서 에러를 낼 수 있는 shared State와 side-effect를 피한다.

2. point-free style(aka tacit programming)같은 특징을 가진다. -> 재사용 가능한 코드를 위해 함수가 근본적으로 단순화되고 쉽게 재구성되는 경향이 있다.

3. declarative하게 단계별로 설명되지않고 수행할 작업(what to do)에 집중하여 함수가 방법을 처리하도록 하는 경향.

->리팩토링 및 성능 최적화를 위한 여유를 남겨두고 코드변경이 거의 없이 전체 알고리즘을 효율적으로 대체할 수 있다.

(memoize, lazy evaluation in place)

4. pure function을 사용하는 계산은 threading resource 충돌, 여러 프로세서, 분산 컴퓨팅 클러스터에서 쉽게 확장 할 수 있다.

 

- 단점

1. point-free style처럼 과도하게 사용하면 코드가 추상적으로 짖어되고 간결하고 덜 구체적으기 떄문에 가독성이 떨어진다.

2. FP 학습 자료가 학문적이고 형식적인 경향이 있어서 배우기 어렵다 (람다 미적분, 대수학 등)

 

 

'Javascript&Typescript' 카테고리의 다른 글

Hoisting  (0) 2021.03.04
Iterable & Iterator  (0) 2021.02.23
classical & prototypal inheritance in javascript  (0) 2021.02.22
Declarative and Imperative programming  (0) 2021.02.21
Closure  (0) 2021.02.19