1. OOP (Object Oriented Programming)
- 객체지향 프로그래밍이랑 "인간 중심적 프로그래밍" 패러다임
- 현실 세계를 프로그램으로 옮겨와 프로그래밍하는 것
- 현실 세계의 사물들을 "객체"라고 보고, 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 한느 것(추상화)
- OOP로 코드를 작성하면 재사용성 업!
- 자주 사용되는 로직을 라이브러리로 만들어 계속해서 사용할 수 있음
- 내부적으로 어떻게 동작하는지 몰라도 개발자는 라이브러리가 제공하는 기능들을 사용할 수 있어 생산성 업!
- 객체 단위로 코드가 나눠져 작성되기때문에 디버깅 굿! 유지보수 굿!
- 데이터 모델링을 할 때 객체와 매핑하는 것이 수월하기 때문에 요구상황 명확하게 파악가능!
- OOP의 치명적 단점: 객체가 상태를 갖는다는 것이다. 변수가 존재하고 이 변수를 통해 객체가 예측할 수 없는 상태를 갖게 되어 애플리케이션 내부에서 버그를 발생시킨
객체 지향적 설계 원칙
1) SRP (Single Responsibility Principle)
2) OCP (Open-Closed Principle)
: 확장 오픈/ 변경 클로즈
3) LSP (Liskov Substitution Principle)
4) ISP (Interface Segregation Principle)
5) DIP (Dependency Inversion Principle)
2. RESTful API
- REST: REpresentational State Transfer
- REST는 Resource Oriented Artchitecture
- API의 설계의 중심에 자원이 있고, HTTP 메소드를 통해 자원을 처리하도록 설계하는 것
REST 6원칙
1) Uniform Interface
2) Stateless
3) Caching
4) Client-server
5) Hierarchical system
6) Code on demand
RESTful 하게 API 를 디자인 한다는 것은 무엇을 의미
1) 리소스와 행위를 명시적/직관적으로 분리
- URI(리소스)는 명사로
- 행위는 HTTP 메소드로 표현: GET(조회), POST(생성), PUT(기존 entity 전체 수정), PATCH(기존 entity 일부 수정), DELETE(삭제)
2) 메시지는 헤더/바디 명확하게 분리
3) API 버전 관리
4) 서버와 클라이언트가 같은 방식을 사용해서 요청
RESTful의 장/단점
1) 장점:
- open API 제공쉬움
- 멀티플랫폼 지원 및 연동 용이
- 원하는 타입으로 데이터 주고 받을 수 있음
- 기존 웹 인프라 그대로 사용 가능
2) 단점:
- 사용할 수 있는 메소드가 4가지뿐
- 분산환경에 부적합
- HTTP 통신모델만 지원
3. TDD
- Test-Driven Development(TDD)
- 매우 짧은 개발 사이클의 반복에 의존하는 소프트웨어 개발 프로세스
- 자동화된 테스트케이스 작성/테스터블한 코드 작성
- 테스트가 코드 작성을 주도하는 개발방식
테스트를 작성하기 위해
- 개발자는 해당 기능의 요구사항과 명세를 분명히 이해
- 새로운 기능을 추가할 때 테스트 코드를 작성함으로써, 새로운 기능이 제대로 작동함과 동시에 기존의 기능들이 잘 작동하는지 테스트를 통해 확인할 수 있음
4. 함수형 프로그래밍
특징#1 immutable vs. mutable
특징#2 first-citizen
- 함수는 일급 객체
- 일급객체란:
- 함수 안의 함수 ok, 반환값 함수 ok
- 할당 이름에 상관없이 고유 구별 가능
- 함수를 리터럴로 바로 정의 가능
Reactive Programming = 선언형 프로그래밍
- 명령형 프로그래밍 <-> Reactive Programming = 선언형 프로그래밍
- 함수형 프로그래밍 패러다임
- 반응형 프로그램은 기본적으로 모든것을 스트림으로 봄
- 스트림이란 값들의 집합
- 스트림은 제공된는 함수형 메소드를 통해 데이터를 immutable하게 관리할 수 있음
5. MVC 패턴
Model /View /Controller
Git, GitHub
- git: version control system
Reference