Запах кода 135 — Интерфейсы с одной реализацией

Быть обобщенным и предвидеть будущее — это хорошо.

TL;DR: Не обобщайте слишком сильно

Проблемы

  • Спекулятивный дизайн

  • Сложность

  • Чрезмерная инженерия

Решения

  1. Уберите интерфейс, пока не появится больше примеров

Контекст

В прошлом программисты говорили нам проектировать для изменений.

Сегодня мы следуем научному методу.

Всякий раз, когда мы находим дублирование, мы его удаляем.

Не раньше.

Образец кода

Неправильный

public interface Vehicle {
    public void start();
    public void stop();
}

public class Car implements Vehicle {
    public void start() {
        System.out.println("Running...");
    }
    public void stop() {
        System.out.println("Stopping...");
    }
}

// No more vehicles??
Вход в полноэкранный режим Выйти из полноэкранного режима

Правильно

public class Car {
    public void start() {
        System.out.println("Running...");
    }
    public void stop() {
        System.out.println("Stopping...");
    }
}

// Wait until more vehicles are discovered
Войти в полноэкранный режим Выход из полноэкранного режима

Обнаружение

[X] Автоматическое

Это очень просто для наших редакторов, поскольку они могут отследить эту ошибку во время компиляции.

Исключения

Это правило относится к межсистемному определению и бизнес-логике.

Некоторые фреймворки определяют интерфейс как протокол, который должен быть выполнен.

В наших биекциях мы должны моделировать существующие протоколы реального мира.

Интерфейсы — это соответствие протокола MAPPER.

Протоколы инъекции зависимостей объявляют интерфейсы, которые выполняются с их реализацией. До этого момента они могут быть пустыми.

Если ваш язык определяет интерфейс для тестового мокинга, это еще один запах кода.

Теги

  • Over Design

Подробнее

Запах кода 130 — AddressImpl

Maxi Contieri ・ Apr 18 ・ 2 min read

#codenewbie #учебник #webdev #java

Заключение

Мы должны ждать абстракций и не быть творческими и спекулятивными

Кредиты

Фото Брайана Костюка на Unsplash


Я люблю программное обеспечение, потому что если вы можете что-то представить, вы можете это построить.

Рэй Оззи

Программная инженерия Великие цитаты

Maxi Contieri ・ Dec 28 ’20 ・ 13 min read

#codenewbie #программирование #цитаты #программное обеспечение

Эта статья является частью серии CodeSmell.

Как найти зловонные части вашего кода

Maxi Contieri ・ May 21 ’21 ・ 4 min read

#codenewbie #учебник #качество кода #новички

Оцените статью
Procodings.ru
Добавить комментарий