안녕하세요.
이번시간에 자바스크립트 개발에서 대표적 페러다임인 객제지향과 함수형 프로그래밍에 대해 알아보도록 하겠습니다
먼저 객제치향 즉, OOP에 대해 알아보도록 하겠습니다.
OOP란?
- class object를 기반으로 한 프로그래밍 기법입니다. (과거에는 class가 아니라 function 생성자에 프로토타입을 추가하여 사용하였습니다. ES6 이후로 class가 나와 OOP에 새로운 페러다임을 불어넣어줬습니다.)
- 관련이 있는 코드를 그룹화를 시켜 객체를 만들어내는 것입니다.
- 대표적인 특징으로는 상속성, 다형성, 추상화, 캡슐화가 있습니다.
FP란?
- 코드의 사이드이펙트를 피하고 순수함수로 작성하는 기법을 의미합니다.
- 외부의 데이터를 참조하여 수정하면 안됩니다.(불변성을 유지해야합니다)
- 순수함수, 고차함수, 참조투명성에 기반을 둔 개념입니다.
두개의 패러다임은 개발하면서 겪는 공통적인 문제를 해결하기 위한 디자인 패턴인 패러다임입니다. 코드는 늘 관리하기 쉬워야하고, 확장성이 용이해야하며, 메모리 효율성이 좋아야합니다.
객체지향 vs 함수형 프로그래밍의 차이점
- 함수형 프로그래밍은 고정된 데이터를 다루기에 용이합니다. 반면에 객체지향 프로그래밍은 공통적인 데이터를 다루기에 좋습니다.
- 함수형 프로그래밍은 stateless 한 특징을 보입니다. 상태값을 수정하면 안되며 기존 상태의 불변성을 유지하면서 새로운 데이터값을 리턴해야합니다. 반면에 객체지향은 statefull 한 특징을보이며, class의 메서드들이 그 class 프로퍼티의 상태를 변경할 수 있습니다.
- 함수형 프로그래밍은 선언형 프로그래밍이며, 객치제향 프로그래밍은 명령형 프로그래밍이다.