(이 글은 '클린 아키텍처 - 소프트웨어 구조와 설계 원칙'을 읽고 정리한 글입니다. 예시는 책의 것과 다를 수도 있습니다) 좋은 소프트웨어는 깔끔한 코드(Clean Code)에서 시작합니다. 좋은 벽돌을 사용하지 않으면 빌딩의 아키텍처가 좋고 나쁨은 크게 의미가 없고, 반대로 좋은 벽돌을 사용하더라도 빌딩의 아키텍처를 엉망으로 만들 수 있습니다. 그래서 좋은 벽돌로 좋은 아키텍처를 정의하는 원칙이 필요 -> SOLID SOLID원칙의 목적 중간 수준의 소프트웨어 구조가 변경에 유연하고, 이해하기 쉽고 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반이 되도록 하는 데 있습니다. (여기서 중간 수준 소프트웨어는 코드 수준보다는 조금 상위이며 모듈과 컴포넌트 내부에서 사용되는 소프트웨어를 말합니다)..
의존성, 의존성 주입, 의존성 역전에 대해서 정리하려고 합니다. 의존성 아래와 같은 코드가 있을 때, 'A클래스는 B클래스에 의존성을 갖는다'라고 합니다. class A { let b = B() // 'A클래스는 B클래스에 의존성을 갖는다' } class B { } 이때 객체 인스턴스를 사용하는 곳(A)을 클라이언트(Client)라고 부르고, 의존성(a dependency)은 사용되는 객체 인스턴스(B)를 말합니다. '의존성이 변하면, 클라이언트에 영향을 미치게 되는 관계'입니다. 의존성 주입(Dependency Injection, DI) 위 코드는 의존성을 클라이언트가 직접 인스턴스를 만들고 있습니다. 아래와 같이 의존성의 인스턴스를 외부로부터 생성하여 전달받는 것을 의존성 주입라고 부릅니다. clas..