프로그래밍 패러다임
프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론
- 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 함
- 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 함
프로그래밍 패러다임의 분류
함수형 프로그래밍
순수 함수
를 블록처럼 쌓아 로직을 구현하고 고차 함수
를 통해 재사용성을 높인 프로그래밍 패러다임
함수형 프로그래밍은 순수 함수
를 통해 부수 효과(Side effect)를 최대한 억제하여 오류를 피하고 프로그램의 안정성을 높인다.
순수 함수
순수함수란 출력이 입력에만 의존하는 함수를 의미한다.
const b = 2
const func = (a) =>{
return a + 1
}
func는 매개변수 a에만 영향을 받으며, 다른 전역 변수b
가 이 리턴값에 영향을 주지않으므로 순수함수라고 할 수 있다.
고차 함수
고차 함수란 함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것을 의미한다.
고차 함수는 인자로 받은 함수를 필요한 시점에 호출하거나 클로저
를 생성하여 반환한다.
자바스크립트의 함수는 일급 객체
이므로 값처럼 인자로 전달할 수 있으며 반환할 수도 있다.
일급 객체
변수나 메서드에 함수를 할당할 수 있다
함수 안에 함수를 매개변수로 담을 수 있다
함수가 함수를 반환할 수 있다
자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급객체이다. 따라서 자바스크립트의 함수는 흡사 변수와 같이 사용할 수 있으며 코드의 어디에서든지 정의할 수 있다.
객체지향 프로그래밍
객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식을 의미한다.
객체지향 프로그래밍의 특징
추상화
시스템으로부터 핵심적인 개념 또는 기능을 간추려내는 것
캡슐화
객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것
상속성
상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추가, 확장하는 것
다형성
하나의 메서드나 클래스가 다양한 방법으로 동작하는 것
오버로딩 : 같은 이름을 가진 메서드를 여러개 두는 것
오버라이딩 : 상위 클래스로부터 상속받은 메서드를 하위 클래스가 재정의 하는 것
SOLID 원칙
객체지향 프로그래밍을 설계할 때는 SOLID원칙을 지켜주어야한다.
SRP 단일 책임 원칙
모든 클래스는 각각 하나의 책임만을 가져야한다.
OCP 개방-폐쇄 원칙
기존의 코드 변경은 어렵게 확장은 쉽게
LSP 리스코프 치환 원칙
부모 객체에 자식 객체를 넣어도 시스템이 문제없이 돌아가야한다.
ISP 인터페이스 분리 원칙
하나의 일반적인 인터페이스보다 구체적인 여러개의 인터페이스를 만들어야 한다.
DIP 의존 역전 원칙
상위 게층은 하위 계층의 변화에 대한 구현으로부터 독립해야 한다.
절차형 프로그래밍
절차형 프로그래밍은 수행되어야 할 연속적인 계산 과정으로 코드를 구현하는 프로그래밍 방식
- 일의 진행되는 방식으로 코드를 구현하기 때문에 코드의 가독성이 좋고 실행 속도가 빠르다
- 하지만, 모듈화하기가 어렵고 유지 보수성이 떨어진다
nums = [1,2,3]
a = 0
for num in nums:
a += num
print(a)
코테볼 때 함수로 구현안하고 진행 순서대로 구현하는 경우가 있는 데 이걸 절차형 프로그래밍 방식이라고 하면 되겠다.
'📓STUDY' 카테고리의 다른 글
Git 커밋 히스토리에서 파일 완전히 삭제하기 (0) | 2024.03.20 |
---|