본문 바로가기

IT/SOLID 원칙

단일 책임의 원칙 - SRP(Single Responsibility Principle)

단일 책임의 원칙이란 객체는 단 하나의 책임을 가져야한다는 원칙을 말한다.

객체지향적으로 설계 할 때는 응집도를 높게, 결합도는 낮게 설계하는 것이 좋다.

SRP에 만족하는 설계를 하면 응집도를 높게, 결합도는 낮게 설계 할 수 있다.

한 객체에 책임이 많아질수록 클래스 내부에서 서로 다른 역할을 수행하는 코드끼리 강하게 결합될 가능성이 높아진다.

즉, 객체마다 책임을 나누지 않는다면 시스템은 매우 복잡해진다.

그리고 시스템에 수정이 생기면, 수정과 관련 없는 기능에 영향이 생길 수 있고, 모두 테스트 해주어야 한다.

단일 책임의 원칙, 하나의 객체에 하나의 책임을 갖게 설계하면, 위와 같은 문제점에서 벗어날 수 있고, 소스의 재사용  및 가독성이 좋아진다. 

하지만 각 객체마다 책임을 적절히 분배하는 것은 쉽지 않다. 책임을 적절히 분배하기 위해서는 프로그램의 기능을 잘 이해하고 기능에 맞게 객체를 설계해야 한다.