객체 지향 설계 5원칙 SOLID

SOLID 가 개념이긴 하지만 소프트웨어에 녹여 내야 하는 개념이다. SOLID가 잘 적용된 소프트웨어는 상대적으로 이해하기 쉽고 리팩토링과 유지보수가 수월해진다.

SRP 단일 책임 원칙

"어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다" -로버트 C.마틴

하나의 클래스에 클래스에 맞는 기능들이 모여있어야 한다.

Me라는 클래스에 다음과 같은 메소드가 존재한다고 가정해보자

public class Me {
    스프링공부하기()
    자바공부하기()
		알고리즘공부하기()
		출근하기()
    커피제조하기()
    게임하기()
}

Me라는 클레스는 공부로 인한 스트레스로 출근과 커피제조에 지장을 줄 수가 있다. 이런 점이 단일 책임 원칙에 벗어난 코드이다. 이 코드를 수정해보자면

public class Student {
    스프링공부하기()
    자바공부하기()
		알고리즘공부하기()
}

public class Barister {
		출근하기()
    커피제조하기()
}

public class RestMen(?) {
    게임하기()
}

이런 식으로 클래스를 분리하면 스프링 공부하기로 인한 스트레스가 다른 클레스에 영향을 주지 않게 된다.

단일 책임 원칙은 잘된 경우보다 잘못된 경우를 살펴보는 것이 이해하는 데 좋다.

class 사람 {
    String 군번;
    ...
}
...

사람 로미오 = new 사람();
사람 줄리엣 = new 사람();

줄리엣.군번 = "1631232131"; // 매우 이상하다?