Мы много слышали о NFT. Теперь мы осваиваем концепцию взаимозаменяемости

TL;DR: Уважайте MAPPER. Сделайте взаимозаменяемым то, что является взаимозаменяемым в реальном мире, и наоборот.

Проблемы

Решения

  1. Определите взаимозаменяемые элементы в ваших доменах
  2. Смоделируйте их как взаимозаменяемые

Контекст

По данным Википедии

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

В программном обеспечении мы можем заменить взаимозаменяемые объекты другими.

При сопоставлении наших объектов с реальными мы иногда забываем о частичной модели и строим поверх дизайна.

Образец кода

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

public class Person implements Serializable {
    private final String firstName;
    private final String lastName;
    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}
shoppingQueueSystem.queue(new Person('John', 'Doe'));

Верно

public class Person  { 
} 
shoppingQueueSystem.queue(new Person());
// The identity is irrelevant for queue simulation

Обнаружение

[Х] Руководство

Это смысловой запах.

Нам нужно понять модель, чтобы проверить, правильная она или нет.

Теги

  • Над дизайном

Заключение

Сделайте взаимозаменяемым то, что взаимозаменяемо, и наоборот.

Звучит просто, но требует дизайнерских навыков и избегания случайных сложностей.

Кредиты

Фото Андрей Метелев на Unsplash

Люди думают, что информатика — это искусство гениев, но на самом деле все обстоит наоборот: многие люди делают вещи, которые строятся друг на друге, как стена из мини-камешков.

Дональд Кнут



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



Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Больше контента в публикации Level Up Coding.
Подписывайтесь: Twitter, LinkedIn, Информационный бюллетень
Level Up меняет рекрутинг в сфере технологий ➡️ Присоединяйтесь к нашему коллективу талантов