상속의 깊이가 너무 깊어선 안됩니다.

 

상속은 확실히 객체 지향 프로그래밍에서 가장 가치 있는 개념 중 하나입니다. 상속이란 이전에 생성된 클래스를 기반으로 속성과 동작의 컬렉션을 만들어, 코드를 구획화하고 재사용하는 방법중 하나입니다. 그러나 너무 깊은 상속 트리를 만들어, 이 개념을 남용하면 매우 복잡하고 유지 관리할 수 없는 코드가 나올 수 있습니다. 대부분의 경우 상속 트리가 너무 깊은 이유는 컴포지션을 사용하는게 더 합리적일 때, 상속을 사용하려 했기 때문에 발생합니다.

이 규칙은 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. :star2:

원문으로 바로가기

Star This Project