Robert C. Martin 의 저서 “Principles of Object Oriented Design” 에서 소개된 단일 책임 원칙에 따르면, 클래스는 단 하나의 책임만을 가져야 합니다.
클래스에 둘 이상의 책임이 있는 경우, 책임은 결합됩니다.
하나의 책임을 변경하는 것이 클래스가 다른 책임을 충족시키는 것을 손상시키거나 억제할 수 있습니다.
이러한 커플링은 코드가 수정될 때 예상치 못하게 망가지는 깨지기 쉬운 디자인을 초래할 수 있습니다.
다른 클래스에 너무 많이 의존하는 클래스들은 너무 많은 책임을 결합하려는 경향이 있고, 이 클래스들은 더 작은 클래스들로 분할되어야 합니다. 중첩 클래스 의존성은 외부 클래스에 대한 의존성으로 여겨지지 않습니다.
규칙을 어긴 코드
임계치 5에서
class Foo { // 규칙을 어긴 코드 - Foo 클래스는 너무 많은 클래스에 의존하고 있습니다: T1, T2, T3, T4, T5, T6 그리고 T7
T1 a1; // Foo 는 T1 과 결합됩니다.
T2 a2; // Foo 는 T2 와 결합됩니다.
T3 a3; // Foo 는 T3 와 결합됩니다.
public T4 compute(T5 a, T6 b) { // Foo 는 T4, T5 그리고 T6 와 결합됩니다.
T7 result = a.getResult(b); // Foo 는 T7 과 결합됩니다.
return result;
}
public static class Bar { // 규칙을 준수한 코드 - Bar 는 2개의 클래스에 의존합니다: T8, T9
T8 a8;
T9 a9;
}
}
If you like SONARKUBE, don’t forget to give me a star.