컴퓨터/Software Architecture

[Clean Architecture] SOLID 원칙, SRP(단일 책임 원칙)

mikasaAck 2023. 2. 25. 01:05
728x90

intro

clean sw architecture를 만들기 위해서는, 그게 무엇인지 정의할 수 있어야 한다.
변경하기 쉬워야 하고, 이해하기 쉬워야 하고, 등등. 그렇게 디자인하고자 할 때, 지켜야 하는 것은 무엇일까?
대표적인 원칙으로, SOLID 원칙이 있다. SOLID 원칙은 모듈 수준에 적용할 수 있다.
이번 포스팅에서는 첫 번째 'S' SRP(단일 책임 원칙)를 알아보려 한다.

 

SRP (Single Responsiblity Principle)

하나의 모듈은 하나의 Actor에 대해서만 책임져야 한다.

모듈이란? 하나의 소스 파일 정도로 이해하자. 객체 지향 프로그래밍에서는 하나의 클래스라고 보면 될까?
Actor란? 해당 모듈에 변경을 요청하는 대상이다.

 

하나의 클래스가 여러 Actor를 책임지면 왜 안 되는 걸까?

1. 임의의 Actor의 요구사항이 다른 Actor에 의도치 않게 영향을 준다.
왜냐하면, Class의 특정 method 동작에 대해서, Actor1과 Actor2가 요구하는 내용이 다를 수 있기 때문이다.

예를 들어, 아래 그림처럼 3개의 Actor가 Employee Class 변경을 요청하고 있다. 이때, CFO가 원하는 reportHours() 기능대로 변경할 경우, 다른 Actor들도 원치 않더라도 그 영향을 고스란히 받게 된다!!!

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*4bZrUKYU1QS0YYAXOC0UAg.png


2. 변경사항을 merge할 때, conflict 발생할 가능성이 크다.
왜냐하면 하나의 소스파일이 여러 method를 포함하고 있을 것이므로, 여러 개발자가 동시에 같은 method를 수정할 가능성이 올라가기 때문이다.

 

reference

728x90
반응형