프로그래밍 페러다임

김신영·2023년 11월 4일
0

Clean Architecture

목록 보기
2/4
post-thumbnail

세 가지 패러다임

구조적 프로그래밍

구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다.

  • 무분별한 점프 (goto) 는 프로그램 구조에 해롭다.
  • if/then/else, do/while/until 과 같이 더 익숙한 구조로 대체

객체 지향 프로그래밍

객체 지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과한다.

함수형 프로그래밍

함수형 프로그래밍은 변수 할당에 대해 규칙을 부과한다.

객체 지향 프로그래밍

  • 캡슐화
  • 상속
  • 다형성
    • 의존성 역전

결론

  • 다형성을 이용하여 전체 시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득할 수 있다.
  • 의존성 역전을 활용하여 플러그인 아키텍처를 구성할수 있다.
  • 저수준의 세부사항은 중요도가 낮은 플러그인 모듈로 만들수 있다.
    • 고수준의 정책을 포함하는 모듈과는 독립적으로 개발하고 배포할 수 있다.

함수형 프로그래밍

불변성과 아키텍처

  • 변수의 가변성으로부터 발생하는 문제들 (동시성 문제)
    • race condition (경합 조건)
    • dead lock (교착 상태)
    • conccurent update (동시 업데이트)

가변성의 분리

  • 가변 컴포넌트와 불변 컴포넌트를 분리하기
  • 불변 컴포넌트에서는 순수하게 함수형 방식으로 작업이 처리

Diagram

이벤트 소싱

  • 상태가 아닌 트랜잭션을 저장하는 전략
  • 상태가 필요해지면, 단순히 상태의 시작점부터 모든 트랜잭션을 처리한다.
  • CRUD가 아니라 CR만 수행한다.
  • 따라서 충분한 데이터 저장소가 필요하다.
profile
Hello velog!

0개의 댓글