SOLID 가 개념이긴 하지만 소프트웨어에 녹여 내야 하는 개념이다. SOLID가 잘 적용된 소프트웨어는 상대적으로 이해하기 쉽고 리팩토링과 유지보수가 수월해진다.
"어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다" -로버트 C.마틴
하나의 클래스에 클래스에 맞는 기능들이 모여있어야 한다.
Me라는 클래스에 다음과 같은 메소드가 존재한다고 가정해보자
public class Me {
스프링공부하기()
자바공부하기()
알고리즘공부하기()
출근하기()
커피제조하기()
게임하기()
}
Me라는 클레스는 공부로 인한 스트레스로 출근과 커피제조에 지장을 줄 수가 있다. 이런 점이 단일 책임 원칙에 벗어난 코드이다. 이 코드를 수정해보자면
public class Student {
스프링공부하기()
자바공부하기()
알고리즘공부하기()
}
public class Barister {
출근하기()
커피제조하기()
}
public class RestMen(?) {
게임하기()
}
이런 식으로 클래스를 분리하면 스프링 공부하기로 인한 스트레스가 다른 클레스에 영향을 주지 않게 된다.
단일 책임 원칙은 잘된 경우보다 잘못된 경우를 살펴보는 것이 이해하는 데 좋다.
class 사람 {
String 군번;
...
}
...
사람 로미오 = new 사람();
사람 줄리엣 = new 사람();
줄리엣.군번 = "1631232131"; // 매우 이상하다?