프로그래머에게 프로그래밍의 관점을 갖게 해주는 개발 방법론
예를 들면 다음과 같다.
객체지향형 프로그래밍은 프로그램을 객체들의 집합으로 보게 하고
함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의 집합으로 보게 한다.
프로그래밍 패러다임은 크게 선언형과 명령형으로 나눠진다.
선언형 프로그래밍은 '무엇을' 풀어내는가? 에 집중한다.
또한 프로그램은 함수 집단이라는 명제가 담겨있기도 하다.
함수형 프로그래밍은 선언형 패러다임의 일종이다.
작은 순수 함수들을 블록처럼 쌓아 로직을 구현하고, 고차 함수를 통해 재사용성을 높인다.
출력이 입룍에만 의존하는 것
함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것
이때, 해당 언어가 일급 객체라는 특징을 가져야 고차 함수를 쓸 수 있다.
변수나 메서드에 함수를 할당할 수 있다.
함수 안에 함수를 매개변수로 담을 수 있다.
함수가 함수를 반환할 수 있다.
이 외에도 커링, 불변성 등 많은 특징이 있다.
Object-Oriented Programming은 객체들의 집합으로 프로그램의 상호 작용을 표현한다.
데이터를 객체로 취급하며, 객체 내부에 선언된 메서드를 활용하는 방식이다.
설계에 많은 시간이 소요되고, 처리도 느리다.
SOLID 원칙을 지켜야한다
Single Responsibility Principle, 단일 책임 원칙이다.
모든 클래스는 각각 하나의 책임만 가져야 한다.
Open Close Principle. 개방 폐쇄 원칙이다.
기존의 코드는 유지하면서 확장을 쉽게 할 수 있어야한다.
Liskov Substitution Principle. 리스코프 치환 원칙이다.
객체는 프로그램의 정확성을 유지하면서 하위 타입의 인스턴스로 바꿀 수 있는 원칙이다. 즉, 부모 객체에 자식 객체를 넣어도 시스템이 돌아가야한다.
Interface Segregation Principle. 인터페이스 분리 원칙이다.
하나의 일반적 인터페이스보다 구체적인 여러개 인터페이스를 만들어야 한다.
Dependency Iversion Principle. 의존 역전 원칙이다.
자신보다 변하기 쉬운것에 의존하던걸, 인터페이스나 상위 클래스에 의존하여 변하기 쉬운 것에 변화에 영향을 받지 않는것.
즉, 상위 계층은 하위 계층의 변화로부터 독립한다.
로직이 수행되어야 할 연속적인 계산 과정으로 이뤄진다.