- 절차지향, 객체지향, 함수형 프로그래밍 [chapter 05 선택 미션]
1. 절차지향 프로그래밍
물이 위에서 아래로 흐르는 것처럼 소스 코드를 위에서부터 차례대로 읽는 방법
→ 소스 코드의 순서가 굉장히 중요하며, 프로그램 전체가 유기적으로 연결되어 있다.
- 실행 속도가 빠르다.
- 사소한 문제 하나로도 전체 시스템이 안 돌아갈 수 있다.
- 소스 코드의 순서가 바뀌면 결과가 달라질 수 있다.
2. 객체지향 프로그래밍
프로그램을 다수의 객체로 만들고 이 객체끼리 서로 상호작용하는 방법
→ 코드를 작성할 때 '객체'라는 단위로 묶어서 이들의 조합으로 프로그램을 만든다.
- 유지 보수가 쉽고 생산성이 좋다. (문제가 발생하면 객체만 교체하면 된다.)
- 설계에 많은 시간이 걸린다. (모든 객체의 역할과 기능을 이해해야 한다.)
- 처리 속도가 절차지향보다 느리다.
- 객체지향은 절차지향의 반대이다?
X. 만드는 과정이 다를 뿐, 서로 대립되는 개념이 아니다.
→ 절차지향은 순차적으로 실행하는 것에, 객체지향은 관계나 조직에 초점을 둔다.
3. 함수형 프로그래밍
변수 사용을 최소화함으로써 스파게티 코드의 오류를 줄이는 방법
→ 함수(function)란, 특정한 기능을 하는 소스 코드를 따로 빼서 묶어 놓은 것
// ex) 숫자 배열 상수
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(
numbers
// 짝수만 걸러내는 함수형 코드
.filter((number) => { return number % 2 === 0 })
// 각 수를 하나 작은 수와 곱하는 함수형 코드
.map((number) => { return number * (number - 1) })
// 값들을 더해서 결과를 축적하는 함수형 코드
.reduce((prev, cur) => { return prev + cur })
);