Post

SRP: 단일 책임 원칙

7. SRP: 단일 책임 원칙

단 하나의 일만 해야 한다는 원칙은 SRP가 아님(헷갈림 주의!)

단일 모듈은 변경의 이유가 하나, 오직 하나뿐이여야 한다

하나의 모듈은 하나의, 오직 하나의 사용자 또는 이해관계자에 대해서만 책임져야 한다.

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

모듈은 단순히 함수와 데이터 구조로 구성된 응집된 집합

단일 액터를 책임지는 코드를 함께 묶어주는 힘이 바로 응집성

징후1: 우발적 중복

서로 다른 액터가 의존하는 코드를 너무 가까이 배치하면 문제가 발생

SRP는 서로 다른 액터가 의존하는 코드를 서로 분리하라고 말한다.

징후2: 병합

많은 사람이 서로 다른 목적으로 동일한 소스 파일을 변경할 때 징후 발생

서로 다른 액터를 뒷밤침하는 코드를 분리!!

해결책

  1. 데이터와 메서드를 분리

    메서드 클래스는 서로의 존재를 몰라야 함

    개발자가 세 클래스를 인스턴스화하고 추적해야 한다는 단점 존재

  2. 퍼사드(facade) 패턴

    세 클래스의 객체를 생성하고, 요청된 메서드를 가지는 객체로 위임하는 facade 클래스 생성

  3. 가장 중요한 업무 규칙을 데이터와 가깝게 배치하는 방식

여러 메서드가 하나의 가족을 이루고, 메서드의 가족을 포함하는 각 클래스는 하나의 유효범위가 된다.

결론

단일 책임 원칙은 메서드와 클래스 수준의 원칙

참조

  1. 클린 아키텍처(Clean Architecture)
This post is licensed under CC BY 4.0 by the author.