Code Smell 150 — Равное сравнение

Каждый разработчик сравнивает атрибуты одинаково. Они ошибаются.

TL;DR: Не экспортируйте и не сравнивайте, просто сравнивайте.

Проблемы

  • Нарушение инкапсуляции

  • Дублирование кода

  • Нарушение сокрытия информации

  • Нарушение антропоморфизма

Решения

  1. Скрыть сравнение в одном методе

Контекст

Сравнение атрибутов активно используется в нашем коде.

Нам нужно сосредоточиться на поведении и ответственности.

Сравнение с другими объектами — это ответственность объекта. А не с нашими собственными.

Преждевременные оптимизаторы скажут нам, что это менее производительно.

Мы должны попросить у них реальные доказательства и противопоставить им более удобное решение.

Образец кода

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

if (address.street == 'Broad Street') {


if (location.street == 'Bourbon St') {

// 15000 usages in a big system  
// Comparisons are case sensitive
Вход в полноэкранный режим Выйти из полноэкранного режима

Правильно

if (address.isAtStreet('Broad Street') {
    }

// ...

if (location.isAtStreet('Bourbon St') {
    }  
// 15000 usages in a big system  

function isAtStreet(street) {
  // We can change Comparisons to case sensitive in just one place. 
}

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

Обнаружение

[X] Полуавтоматическое

Мы можем обнаружить сравнение атрибутов с помощью синтаксических деревьев.

Для примитивных типов может быть хорошее применение, как и для многих других запахов.

Теги

  • Инкапсуляция

Заключение

Нам нужно поместить обязанности в одно место.

Сравнение — одна из них.

Если некоторые из наших бизнес-правил изменятся, нам нужно будет изменить одну точку.

Отношения

Запах кода 63 — Зависть к функциям

Maxi Contieri ・ Mar 23 ’21 ・ 2 min read

#codenewbie #программирование #oop #webdev

Code Smell 101 — Сравнение с булевыми числами

Maxi Contieri ・ Nov 11 ’21 ・ 2 min read

#webdev #новичкам #программирование #учебник

Кредиты

Photo by Piret Ilver on Unsplash


Поведение — это самое важное в программном обеспечении. Это то, от чего зависят пользователи. Пользователям нравится, когда мы добавляем поведение (при условии, что это то, чего они действительно хотели), но если мы изменяем или удаляем поведение, от которого они зависят (вносим ошибки), они перестают нам доверять.

Майкл Фезерс

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

Maxi Contieri ・ Dec 28 ’20 ・ 13 min read

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

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

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

Maxi Contieri ・ May 21 ’21 ・ 7 min read

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

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