본문 바로가기
Korean/Spring Study

객체지향 원칙 : 단일 책임 원칙 (Single responsibility principle. SRP.)

by 나리일 2022. 1. 28.

단일 책임 원칙 (Single responsibility principle. SRP.)

하나의 클래스/모듈에는 하나의 책임만 가지고 있어야 한다는 의미이다.

이것저것 관심사가 혼재하는 클래스를 만들면 안되고, 하나의 클래스에는 하나의 관심사만 갖게 해야한다는 것이다.

만약 클래스를 수정할 이유가 생긴다면, 그 이유의 가능성은 한가지여야한다.

 

로버트 마틴이 저술한 클린코드의 코드를 그대로 가지고 이해해보자.

로버트 마틴은 "Classes should be small" -의역해보면 클래스는 무조건 작아야한다.- 라고 반복해서 얘기한다.

그렇다면 이 클래스는 충분히 small할까?

public class SuperDashboard extends JFrmae implements MetaDataUser{
    public Component getLastFocusedComponent()
    public void setLastFocused(Component lastFocused)
    public int getMajorVersionNumber()
    public int getMinorVersionNumber()
    public int getBuildNumber()
}

이 클래스의 관심사는 지금 두가지이다. 최근 포커스 컴포넌트에대한 접근, 그리고 버전관리.

책에서는 클래스를 간단히 설명할때 'if', 'and', 'or', 'but'과 같은 접속사가 나오면 안된다고 말한다. 최대한 간결해야한다.

여기서 단일책임 원칙을 따르는 클래스로 만든다면 Version에 관한 메소드들을 분리해야한다.

 

public class Version{
	public int getMagerVersionNumber()
    public int getMinorVersionNumber()
    public int getBuildNumber()
}

이렇게 하나의 클래스/모듈에는 하나의 관심사만 담고 있어야한다.

 

댓글