Учебные классы отлично подходят для сбора протоколов

TL;DR: не добавляйте случайный протокол к своим занятиям

Проблемы

  • Читабельность
  • Нарушение единой ответственности
  • Плохая сплоченность
  • Высокое сцепление
  • Низкая возможность повторного использования

Решения

  1. Сломай свой класс
  2. Экстракт Класс

Связанные рефакторинги



Рефакторинг 007 — Извлечение класса
Поведение повторяется во всей системе. Но нам не хватает концепцииmedium.com



Контекст

Мы склонны помещать протокол в первый класс, который мы находим.

Это не проблема.

Нам просто нужно рефакторить.

Образец кода

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

public class MyHelperClass {
  public void print() { }
  public void format() { }
  // ... many methods more
  // ... even more methods 
  public void persist() { }
  public void solveFermiParadox() { }      
}

Верно

public class Printer {
  public void print() { }
}
public class DateToStringFormater {
  public void format() { }
}
public class Database {
  public void persist() { }
}
public class RadioTelescope {
  public void solveFermiParadox() { }
}

Обнаружение

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

Большинство линтеров подсчитывают методы и предупреждают нас.

связи









Code Smell 22 — помощники
Вам нужна помощь? Кому ты собираешься звонить?blog.devgenius.io





Больше информации

Гуру рефакторинга

Теги

  • Сплоченность
  • вздутия живота

Заключение

Разделение классов и протоколов — хорошая практика, позволяющая отдавать предпочтение небольшим объектам многократного использования.

Кредиты

Фото автора Marcin Simonides на Unsplash

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

Джеральд М. Вайнберг



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