OOP vs FP

TEDDY·2022년 11월 22일
0

CODECAMP

목록 보기
18/53
post-thumbnail

OOP

: oop는 Object Oriented Programming의 약자로 객체지향 프로그래밍을 뜻한다.

oop는 js에서 구현할 수 있으며 코드의 재사용률을 높이고 코드를 간결하게 함으로써 유지 보수가 쉽다.
그리고 데이터를 안전하게 보관할 수 있다.

  1. 캡슐화(Encapsulation)
    객체의 내부 로직을 감추고 외부에는 상대적으로 안정적인 부분만을 공개함으로써 데이터를 안전하게 보존하는 기법이다. 캡슐화는 외부에 영향을 주지 않고 객체 내부의 구현을 변경할 수 있기 때문에 내부 로직에 대한 유연함을 제공한다.
  1. 추상화(Abstraction)
    공통점을 찾아서 Class로 묶고 복잡한 디테일을 숨기고 핵심만 추출해내는 형태이다. 구현 세부사항 대신 큰 범위의 공통된 기능 측면에서 클래스를 개발하는 것이다.
    예를 들면, 자동차로 생각을 해보면, 아우디나 벤츠같이 브랜드는 다르지만 시동을 걸고 앞으로 나아간다는 공통된 기능을 갖고 있다. 이런 공통된 기능으로 하나로 묶는 방법이라고 할 수있다.(공통된 클래스로부터 상속)

3.상속(Inheritance)
프로토타입을 기반으로 부모 클래스로부터 하위 클래스는 상속을 받을 수 있다.
상속을 받음으로써 코드 재사용이 증가하고 보다 효율적으로 코드를 짤 수있다. 하지만 상속을 받기 때문에 구분을 잘 할수있게 코딩을 해야한다.

FP

: FP는 Functional Programming의 약자로 함수형 프로그래밍이다.

side effect(부수효과)가 없는 pure function을 구현함으로써 프로그램을 디자인한다. 여러개의 작은 function을 엮으며 하나의 큰 function을 구현하고 불변성을 지키게 되며 FP는 선언적 개발 방식이다.
불변성을 지향하기 때문에 프로그램의 동작을 예측하기 쉽고 디버깅이 쉽다.

1.고차 함수 (Higher Order Function)
함수형 프로그래밍에서는 여러 작은 순수 함수들을 연쇄적 혹은 병렬적으로 호출해서 더 큰 함수를 만들어나간다. 함수를 엮기위해서 HOC(Higher-order Component)를 활용해야 한다.
고차함수는 함수의 파라미더로 함수를 전달하고, 함수의 반환값으로 함수를 사용할 수 있다.

(이렇게 설명으로만 보면 유용해보이지만 실제로 사용하려고 하면 머리가 아프다...)

2.불변성(Immutablility)
데이터 변경이 필요한 경우, 원본 데이터 구조를 변경하지 않고 그 데이터를 복사본을 만들어 그 일부를 변경하고, 변경한 복사본을 사용해 작업을 진행한다.

3.순수함수(Pure function)
동일한 인풋에는 항상 같은 값의 아웃풋을 반환해야 한다.
사이드 이펙트가 없어야한다.

0개의 댓글