Clean Architecture

[SOLID] SRP (Single Responsibiliy Principle)

Phililip
728x90

# SRP (단일 책임 원칙)이란?

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

 

즉, 응집성이 높아야 한다.

[참고] 응집성(cohesive)이란, 단일 액터를 책임지는 코드를 함께 묶어주는 정도를 뜻한다.

 

# SRP를 위반할 경우

  • 코드를 수정할 때, 관련 없는 액터에게도 영향을 미친다.
  • 코드 머지 시 충돌이 발생할 확률이 높아진다.

 

# SRP를 위반한 예시

  • calculatePay() 메서드는 회계팀에서 기능을 정의. CFO 보고를 위해 사용
  • reportHours() 메서드는 인사팀에서 기능을 정의. COO 보고를 위해 사용
  • save() 메서드는 DBA가 기능을 정의. CTO 보고를 위해 사용

  • calaulatePay() 메서드와 reportHours() 메서드는 내부에서 regularHours() 메서드를 사용함.

 

만약 CFO 팀 요청으로 regularHours() 로직을 변경한다고 했을 때, reportHours() 메서드를 사용하는 COO 팀에 영향이 끼침.

 

또한, Employee 클래스는 여러 팀에서 같이 사용하기 때문에 각자 수정할 경우 머지할 때 충돌이 발생할 확률이 높음.

 

# SRP 적용 예시

퍼사드 패턴을 적용하여 해결 가능.

 

간단한 구조체인 EmployeeData를 만들고 calculatePay, reportHours, save 메서드를 별도의 클래스에서 따로 구현.

 

각 클래스의 인스턴스는 Employee 클래스가 관리.

 

# 참고

Robert C. Martin. 『클린 아키텍처』. 인사이트, 2019.

 


이번 글은 여기서 마무리.

 

 

 

반응형

'Clean Architecture' 카테고리의 다른 글

[SOLID] OCP (Open-Closed Principle)  (0) 2024.06.18