이름이 좀 그렇지만 단 하나의 일만 하라는 뜻은 아니다.
단일 모듈은 변경의 이유가 하나, 오직 하나뿐이어야 한다.
하나의 모듈은 하나의, 오직 하나의 사용자 또는 이해관계자에 대해서만 책임져야 한다.
즉 단일책임원칙이란
하나의 모듈은 하나의 액터에 대해서만 책임져야 한다.
여기서 모듈이란 가장 단순한 정의로는 소스파일이다. 응집이 SRP를 암시한다.
징후1 우발적 중복
Employee
+ calculatePay
+ reportHours
+ save
Employee클래스의 각 메소드를 다른 액터가 호출한다면? calculatePay의 수정이 reportHours에도 영향을 미친다면?
매우 분노😡🤬
징후2 병합
예전에는 서로 다른 개발자가 employee의 같은 메소드를 수장하여 올리는 경우가 있었고 이는 병합되어 엉망이 되는 경우가 있었다.
해결책
메소드를 각기 다른 클래스로 이동시키자.
데이터와 메소드를 분리라자.
EmployeeData러는 클래스를 만들어 3개의 클래스가 공유하도록 한다
Facade패턴도 대안 중 하나.
'클린아키텍쳐' 카테고리의 다른 글
9. Liskov Substitution Principle (0) | 2021.02.16 |
---|---|
8. Open-closed Principle (0) | 2021.02.16 |
6. 함수형 프로그래밍 (0) | 2021.02.16 |
4. 구조적 프로그래밍 (0) | 2021.02.16 |
3. 패러다임 개요 (0) | 2021.02.03 |