티스토리 뷰
요즘 바빠진 회사 업무와 사이드 프로젝트를 진행하느라 책을 멀리하고 있었.. (사실 시간은 충분했다)
다시 시작해보자.
로버트 C 마틴 - 클린 아키텍처 읽은 내용 정리 글.
: 3부_ 설계 원칙
좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작한다.
SOLID 원칙의 목적은 중간 수준의 소프트웨어 구조가 아래와 같도록 만드는 데 있다.
(*중간 수준: 프로그래머가 이들 원칙을 모듈 수준에서 작업할 때 적용할 수 있다는 뜻)
- 변경에 유연하다.
- 이해하기 쉽다.
- 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 된다.
7장. SRP: 단일 책임 원칙
이 원칙의 이름을 듣는다면 모든 모듈이 단 하나의 일만 해야 한다는 의미로 받아들이기 쉽다.
단 하나의 일만 해야 한다는 원칙은 따로 있다.
그것은 바로 함수는 반드시 하나의, 단 하나의 일만 해야 한다는 원칙이다.
하지만 이 원칙은 SOLID 원칙이 아니며, SRP도 아니다.
단일 책임 원칙은 메서드와 클래스 수준의 원칙이다.
하지만 이보다 상위의 두 수준에서도 다른 형태로 다시 등장한다.
컴포넌트 수준에서는 공통 폐쇄 원칙이 된다.
아키텍처 수준에서는 아키텍처 경계의 생성을 책임지는 변경의 축이 된다.
8장. OCP: 개방-폐쇄 원칙
소프트웨어 개체는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
다시 말해 소프트웨어 개체의 행위는 확장할 수 있어야 하지만, 이때 개체를 변경해서는 안 된다.
소프트웨어 아키텍처를 공부하는 가장 근본적인 이유가 바로 이 때문이다.
만약 요구사항을 살짝 확장하는 데 소프트웨어를 엄청나게 수정해야 한다면, 그 소프트웨어 시스템을 설계한 아키텍트는 엄청난 실패에 맞닥뜨린것이다.
OCP는 시스템의 아키텍처를 떠받치는 원동력 중 하나다.
OCP의 목표는 시스템을 확장하기 쉬운 동시에 변경으로 인해 시스템이 너무 많은 영향을 받지 않도록 하는 데 있다.
이러한 목표를 달성하려면 시스템을 컴포넌트 단위로 분리하고, 저수준 컴포넌트에서 발생한 변경으로부터 고수준 컴포넌트를 보호할 수 있는 형태의 의존성 계층구조가 만들어지도록 해야 한다.
9장. LSP: 리스코프 치환 원칙
바바라 리스코프는 하위 타입을 아래와 같이 정의했다.
"여기에서 필요한 것은 다음과 같은 치환 원칙이다. S 타입의 객체 o1 각각에 대응하는 T 타입 객체 o2가 있고, T 타입을 이용해서 정의한 모든 프로그램 P에서 o2의 자리에 o1을 치환하더라도 P의 행위가 변하지 않는다면, S는 T의 하위 타입니다"
LSP와 아키텍처
초창기에는 상속을 사용하도록 가이드하는 방법 정도로 간주
시간이 지나면서 LSP는 인터페이스와 구현체에도 적용되는 더 광범위한 소프트웨어 설계 원칙으로 변모
아키텍처 관점에서 LSP를 이해하는 최선의 방법은 이 원칙을 어겼을 때 시스템 아키텍처에서 무슨 일이 일어나는지 관찰하는 것.
'독서 > Claen Architecture' 카테고리의 다른 글
[클린 아키텍처] 2부_ 벽돌부터 시작하기: 프로그래밍 패러다임 (1) | 2024.12.24 |
---|---|
[클린 아키텍처] 1부_ 소개 (0) | 2024.12.18 |
- Total
- Today
- Yesterday
- UIGraphicsBeginPDFPageWithInfo
- SWIFT 자바스크립트연동
- pdfkit
- 플로팅팝업
- NSMutableAttributedString
- 스위즐링
- 알고리즘
- SWIFT WebView
- ios
- OOP
- 이펙티브 엔지니어
- UIGraphics
- 객체지향의 사실과 오해
- swiftpdf
- dfs
- UIGraphicsBeginPDFContextToData
- mutableString
- ReactNative
- 에드먼드 라우
- SWIFT JQuery
- riverpod
- wkwebview
- Flutter
- 리팩터링
- SWIFT JavaScript
- NSNotFound
- 클린 아키텍처
- 로버트C마틴
- Swift
- llvm