클린 아키텍처 - 프로그래밍 패러다임

코딩하는스님·2022년 4월 7일
0

클린 아키텍처

목록 보기
1/2
post-thumbnail

객체지향 프로그래밍

  • 데이터와 함수의 조합
  • 실제 세계를 모델링하는 새로운 방법
  • 캡슐화, 상속, 다형성

캡슐화

  • 데이터와 함수가 응집력 있게 구성됨
  • C언어에서는 헤더파일만 제공함으로써 완벽한 캡슐화가 가능하다.
  • 그러나 C++는 오히려 헤더에 private 멤버도 명시를 해야됨.
  • 프로그래머가 올바르게 행동할 것이라고 가정하고 하는 것이기 때문에 OO의 강력한 특성이라 보기 힘듬

상속

  • 어떤 변수와 함수를 유효 범위로 묶어서 재정의 하는 일
  • C에서도 얼추 가능했지만, C++에서는 업캐스팅 없이 편리하게 제공함
  • 0.5점 정도

다형성

  • interface
  • 함수 포인터라는 위험한 포인터를 안전하게 사용할 수 있도록 한다.
  • 다른 모듈에서도 인터페이스를 제대로 구현했다면 별도의 재빌드 없이 사용이 가능해진다.

의존성 역전

  • 구조적인 관점에서는 고수준의 함수가 저수준의 함수를 호출하는 제어흐름을 따른다.
  • 이러한 관점에서는 사용할 함수를 포함하는 모듈을 include 해야 한다.
  • 하지만 의존성 역전이 일어나면 특정 함수를 직접 include하는 것이 아닌 그 함수가 구현한 interface를 include한다.

함수형 프로그래밍

  • 함수형 언어에서는 변수가 변하지 않는다.

불변성과 아키텍처

  • 어플리케이션에서는 동시성 문제를 신경써야한다.
  • 이때 race condition, deadlock, concurrent update 등의 문제가 발생한다.

가변성의 분리

  • 함수형 프로그래밍에서는 가변 컴포넌트와 불변 컴포넌트를 분리한다.
  • atom 기법
  • 불변 컴포넌트를 늘리고, 가변 컴포넌트를 줄여야 한다.

이벤트 소싱

  • 상태가 아닌 트랜잭션들을 저장하는 전략
    • 사용자의 포인트를 관리할 때, 포인트를 업데이트 하는 것이 아니라 포인트의 사용내역 전체를 저장하여 매번 내역 전체에서 현재 포인트를 계산하는 전략
profile
👨🏻‍💻👨🏽‍🦲

0개의 댓글