GitBook
클린 아키텍처

4장 SOLID 설계원칙

변경에 유연하고 예측가능한 코드를 만드는 방법

#클린아키텍처

#책

2023년 12월 25일

개인적으로 클린 아키텍처를 읽고 정리한 글입니다

흔히 좋은 시스템은 깔끔한 코드로부터 시작한다고 하지만
깔끔한 코드만으로는 좋은 시스템을 보장할 수 없습니다.
그렇기에 깔끔한 코드로 좋은 시스템을 만들기 위한 원칙이 필요한데 이것이 SOLID입니다.

SOILD의 목적


  • 변경에 유연하다.
  • 이해하기 쉽다.
  • 재사용 사용 가능하도록 컴포넌트화한다.

SRP 단일 책임 원칙


단일 모듈은 변경이유가 오직 하나뿐이어야 한다.
(하나의 모듈은 하나의 사용자에 대해서만 책임져야한다.)

콘웨이 법칙에 따르면 소프트웨어 시스템은 대체로 조직의 구조에 영향을 받습니다.
그러므로 하나의 모듈은 하나의 이해관계자에 대해서만 책임지도록 설계되어야
우발적 중복(같아 보이는 코드가 서로 다른 이유로 변경이 발생하는 것)을 피할 수 있게 됩니다.

OCP 개방 폐쇄 원칙


확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
기능을 추가할 때 코드를 수정하기보다는 반드시 새로운 코드를 추가하는 방식으로 설계되어야 한다.

LSP 리스코프 치환 원칙


부모 객체와 이를 상속한 자식 객체가 있을 때 자식 객체는 부모 객체를 완전히 대체 가능해야 한다.

치환 가능성을 위배할 경우 상위 모듈이 오염되어 별도 로직을 추가해야 하는 상황이 발생할 수 있습니다.

ISP 인터페이스 분리 원칙


하나의 일반적인 인터페이스를 특정 요구사항에 특화된 인터페이스로 분리해야 한다.

필요이상으로 많은 걸 포함하는 인터페이스 때문에 불필요한 기능 구현과 배포가 발생할 수 있습니다.

DIP 의존성 역전 원칙


고수준 모듈이 저수준 모듈의 세부사항에 의존하지 않도록 해야 한다.

변동성이 큰 구현체에 의존하는 것을 지양하고
변동성이 작은 안정된 추상 인터페이스를 선호하는 아키텍처를 설계해야 합니다.

끝.