BackendStudy #1

정은경·2020년 3월 25일
0

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

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글