상속은 확실히 객체 지향 프로그래밍에서 가장 가치 있는 개념 중 하나입니다.
상속이란 이전에 생성된 클래스를 기반으로 속성과 동작의 컬렉션을 만들어, 코드를 구획화하고 재사용하는 방법중 하나입니다.
그러나 너무 깊은 상속 트리를 만들어, 이 개념을 남용하면 매우 복잡하고 유지 관리할 수 없는 코드가 나올 수 있습니다.
대부분의 경우 상속 트리가 너무 깊은 이유는 컴포지션
을 사용하는게 더 합리적일 때, 상속
을 사용하려 했기 때문에 발생합니다.
이 규칙은 Object
부터 시작하는 상속 트리의 깊이를 파악하여 허용되는 값보다 커질 때 알림을 울립니다.
이 규칙은 파라미터를 어떻게 입력하냐에 따라, 이 규칙의 적용 범위를 달리 할 수 있습니다.
- ? : 정확히 일치할 경우
- * : 에 있는 모든 클래스들
- ** : 아래에 있는 모든 클래스와 하위 패키지의 모든 클래스들
예시
-
java.fwk.AbstractFwkClass
은 AbstractFwkClass 클래스에 도달했기 때문에 카운팅을 멈춥니다. -
java.fwk.\*
은 java.fwkPackage 에 존재하는 멤버들에 모두 적용됩니다. -
java.fwk.\*\*
방금 전과 같은 케이스들을 모두 커버하고, 하위 패키지에도 적용됩니다.
⚠️주의⚠️: 해당 문서는 역자의 능력 부족으로 인해 의역이 들어갔습니다. 더 정확한 의사 전달을 위해 원문을 남겨둡니다. Contribution 환영합니다.
This rule raises an issue when the inheritance tree, starting from Object has a greater depth than is allowed.
For the parameter of the rule, the following rules are applied:
? matches a single character
* matches zero or more characters
** matches zero or more packages
Examples:
java.fwk.AbstractFwkClass will stop count when AbstractFwkClassclass is reached.
java.fwk.* will stop count when any member of java.fwkPackage package is reached.
java.fwk.** same as above, but including sub-packages.
예외
이 규칙은 다음과 같은 클래스나 하위 패키지를 발견하면 카운팅을 중지합니다.
android.\*\*
com.intellij.\*\*
com.persistit.\*\*
javax.swing.\*\*
org.eclipse.\*\*
org.springframework.\*\*
If you like SONARKUBE, don’t forget to give me a star.