단일 책임 원칙

stoph·2022년 9월 19일
0

하나의 클래스는 하나의 책임만을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유여야 한다.

예시

문서를 편집하고 출력하는 A라는 클래스가 있다고 치자.
서비스를 잘 운영하다가 이제 새로운 기능을 추가하려고 한다.

  • 게시글 태그 달기
  • PDF 출력

두 가지 기능 모두 A클래스를 변경 및 수정하여 구현하게 된다.

위와 같이 하나의 클래스에 여러 개의 책임이 있으면 몇 가지 문제점을 갖게 된다.

문제점

1. 의도치 않은 오류 발생
편집 관련된 코드를 수정하다가 실수로 출력 관련된 코드를 건드릴 수 있다.

2. 유지 보수의 어려움
기능이 점점 추가되고 코드의 양이 많아짐에 따라 각 기능이 편집에 대한 것인지, 출력에 대한 것인지 식별하기 힘들어진다.

정리

사실, 위의 예시는 간단하게 예를 든 것이고 실제로는 문맥과 상황에 따라 책임의 기준이 모호하기 때문에 책임을 구분하기 어렵다.

그래서 변경을 책임의 기준으로 삼는다.
따라서, 클래스를 변경할 때 그에 따른 파급효과가 적으면 SRP를 잘 지켰다고 본다.

참고

위키백과 - 단일 책임 원칙
인프런 - 스프링 핵심 원리 기본편 (김영한)
Youtube - 널널한 개발자 TV

0개의 댓글