본문 바로가기
더 좋은 개발자 되기/개발자 책읽기

[개발자 책읽기] 클린 아키텍처-소프트웨어 구조와 설계의 원칙 (7장 8장 - SRP 와 OCP)

by Wonit 2022. 4. 22.

해당 글은 Robert C.Martin 클린 아키텍처 라는 책을 읽고 학습한 내용을 정리 및 회고하는 글 입니다. 자세한 사항은 YES 24 클린 아키텍처 - 소프트웨어 구조와 설계의 원칙 에서 확인해주세요.

 

클린 아키텍처 - 소프트웨어 구조와 설계의 원칙 (Robert C. Martin)

 

  • 위키북스
  • 지은이: Robert C.Martin (Uncle Bob)
  • 옮긴이: 송준이

 


 

이번 장에서 이야기하고자 하는 것

 

SRP

 

  • SRP, Single Responsible Principal
    • SOLID 중 가장 잘못 의미가 전달되었다
    • SRP 는 모듈의 변경의 이유는 하나이다.
    • 최종적으로 정의한 의미는
      • 하나의 모듈은 오직 하나의 액터에 대해서만 책임져야 한다
  • 만약 서로 다른 액터가 하나의 모듈을 바라본다면 협업이 힘들어진다
    • A 라는 액터가 변경된다면 B 라는 액터는 이유도 모른채 내부에서 문제가 발생한다
    • A 라는 액터를 개발할 때 하나의 공통된 모듈을 건들어야 하고
    • B 라는 액터를 개발할 때 역시 하나의 공통된 모듈을 건들어야 한다.

 

OCP

 

  • OCP, Open Close Principal
    • 소프트웨어 아티펙트들은 확장에는 열려있고 변경에는 닫혀있어야 한다
  • OCP 는 컴포넌트 수준에서 매우 중요한 의미를 갖는다.
    • 요구사항을 살짝만 바꿨는데 소프트웨어 많은 곳을 손봐야 한다? 그럼 OCP 가 지켜지지 않은 것이다.
  • OCP 를 만족시키려면 앞서 배운 다형성을 이용해서 의존의 방향을 바꿔야 한다.
    • 의존의 방향을 바꿔서 변경에도 보호될 수 있도록 해야한다
  • OCP야 말로 진정 소프트웨어 시스템 아키텍처를 떠받치는 원동력이 된다.

 

나의 해석과 회고

 

SRP는 나도 꽤나 오랜 기간동안 잘못 알고 있었다.

 

클린 아키텍처를 읽기 전에는 SRP 란 한 클래스에서는 한가지의 일만 해야 한다 라고 이해를 하고 있었고, 나름의 방법을 통해 잘못된 SRP

를 지키기 위해 노력했던 것 같다.

 

하지만 이제는 그 의미를 명확하게 이해했다.

 

SRP는 한가지의 액터에 의해서만 동작해야 하고 수정되어야 한다는 것이다.

 

이 책의 SRP 장을 읽고 얼마 지나지 않아서 나는 객체지향 설계를 간단하게 해야할 일이 있었다.

 

해당 설계를 하며 의도적으로 신경썼던 것은 바로 SRP 였다.

 

정말로 어려웠다. 하나의 액터에 의해서 라는 말을 지키는 것이 너무 어렵고 더욱 많은 시간동안 의도적인 수련을 해야한다는 것을 알게 되었다.

 

이렇게 되면 무엇이 좋을까?

 

OCP 를 잘 할수 있다.

 

소프트웨어의 좋은 아키텍처로 가기 위한 기본인 OCP를 하기 위한 기본이 바로 SRP 인 셈이다.

 

OCP 는 지금껏 내가 경험한 여러 프로젝트에서 클린한 아키텍처를 만드는 가장 중요한 요소였다.

 

아직도 클린한 아키텍처는 나는 OCP 를 잘 만족하는 아키텍처라고 생각한다.

 

이를 위해서는 책에서도 이야기하듯 의존의 방향을 잘 결정해야 하고 외부의 변경으로부터 보호할 수 있도록 하는 것이다.

 

댓글0