8

방금 ​​Java 프로젝트를 분석하기 위해 PMD를 설치했습니다. 정말 좋은 도구, 적극 권장합니다.추상적 인 클래스에서 비어있는 메소드

"추상 클래스에 빈 방법은 추상적이어야한다 대신"

내가 PMD 문서를 체크 아웃하고, 설명은 말한다 : 은 어쨌든, 나는 약간의 오류가 말을 가지고

개발자는이 빈 구현에 의존하여 해당 구현을 코딩 할 수 있습니다.

그래서이 코드 스타일 오류 뒤에 이유를 이해할 생각하지만 다음 시나리오를 고려하십시오. 나는 Entity라는 추상 클래스가 있습니다. 이 클래스는 기본 구현을 가진 부울 메서드를가집니다. (삭제시 관련 엔티티를 삭제할지 여부를 제어 함). 파생 클래스 중 일부만이 기본 동작을 true로 대체합니다.

기본 구현을 제거하고 모든 파생 클래스가 해당 동작을 선언하도록해야합니까? 이 패턴이 그렇게 좋지 않다고 생각하십니까?

설명 : PMD는 단일 return 문이있는 메소드를 비어있는 것으로 취급합니다.

답변

9

나는 그냥 지침 생각합니다. 디자인을 재검토하고 싶을 지 모르지만 디자인이 이미 완벽하게 이해된다면 두뇌 대신 소프트웨어에 복종 할 이유가 없습니다.

0

메소드에 기본 구현이 있으면 비어 있지 않습니까? 또는 나는 무엇인가 놓치 느냐? 나를 위해

는 비어있는 방법은 다음과 같습니다

public void EmptyMethod() 
{} 
+5

, PMD는 너무 비어있는 것으로 부울 또는 null을 반환하는 방법을 취급 – LiorH

0

자바 1.8에 있다면, 당신은 법인에게 인터페이스 대신 추상 클래스를 만들고 거기에 당신의 방법에 대한 기본 구현을 작성할 수 있습니다.

public interface Entity { 
    default boolean yourMethod() { 
     //default implementation ... 
    } 
} 

당신은 참조를 위해 이것을 사용할 수 있습니다 : 잘 https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

관련 문제