본문 바로가기

공통폐쇄원칙2

클린 아키텍처 12장, 13장, 14장 리뷰 12장 컴포넌트 컴포넌트 : 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위 컴파일러형 언어 : 바이너리 파일의 결합체 인터프리터형 언어 : 소스 파일의 결합체 ex) java - .jar , ruby - .gem , .net -> .dll 컴포넌트가 마지막으로 어떤 형태로 배포되든, 잘 설계된 컴포넌트라면 반드시 독립적으로 배포가 가능해야 하며 독립적으로 개발 가능한 능력을 갖춰야 한다. 컴포넌트의 간략한 역사 소프트웨어 개발 초창기 : 프로그램이 로드될 주소 직접 제어 구시대의 라이브러리 함수 접근 : 라이브러리 함수의 소스 코드를 application 코드에 직접 포함시켜 단일 프로그램으로 컴파일 이 때문에, 컴파일 과정 오래 걸리고, 메모리는 한정적 컴파일 시간 단축을 위해 함수 라이브러리를.. 2022. 12. 30.
클린 아키텍처 6장, 7장 리뷰 6장 함수형 프로그래밍(FP) FP 패러다임의 람다(lambda)계산법으로 1930년 발명 정수를 제곱하기 리스프에서 파생한 클로저(Clojure)는 함수형 언어 Java는 가변 변수(Mutable Variable) 사용 - 가변 변수는 프로그램 실행중에 상태가 변할 수 있다. 클로저는 이러한 가변 변수 존재 X 함수형 언어에서는 변수는 한 번 초기화되면 절대로 변하지 않는다. 불변성(Immutable)과 아키텍처 가변 변수에 의해 아키텍처에서 발생하는 문제 Race Condition DeadLock 동시 업데이트(Concurrent Update) 아키텍트는 동시성(Concurrency) 문제에 대해 고려할 줄 알아야한다. 가변성의 분리 불변성과 관련하여 가변 컴포넌트와 불변 컴포넌트를 분리하는 것이 중.. 2022. 12. 25.