Вопрос

Я только что установил PMD для анализа своего Java-проекта.Действительно хороший инструмент, очень рекомендую.В любом случае, я получил несколько ошибок:

«Пустой метод в абстрактном классе должен быть абстрактным»

Я проверил документацию PMD, и в объяснении говорится:

поскольку разработчик может полагаться на эту пустую реализацию, а не на кодирование соответствующей

Итак, я думаю, что понимаю причину этой ошибки стиля кода, но рассмотрим следующий сценарий:У меня есть абстрактный класс Entity.Этот класс имеет логический метод с реализацией по умолчанию.(контролирует, следует ли удалять связанные объекты при удалении).Лишь немногие производные классы переопределяют это поведение по умолчанию на значение true.

Должен ли я удалить реализацию по умолчанию и заставить все производные классы объявлять свое поведение?Вы действительно думаете, что этот шаблон — такая плохая практика?

Уточнение: PMD рассматривает метод с одним оператором возврата как пустой.

Это было полезно?

Решение

Я думаю, это просто ориентир.Он говорит вам, что вы, возможно, захотите пересмотреть свой дизайн, но если ваш дизайн уже имеет смысл, нет причин подчиняться программному обеспечению, а не своему мозгу.

Другие советы

Если вы используете Java 1.8, вы можете сделать Entity интерфейс вместо абстрактного класса и напишите по умолчанию реализация вашего метода в нем.

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

Вы можете использовать это для справки:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top