Занятия удобны. Мы можем позвонить им и вызвать их в любое время. Это хорошо?

Проблемы

  • Связь
  • Расширяемость
  • Трудно издеваться

Решения

  1. Используйте интерфейсы или черты (если есть).
  2. Используйте внедрение зависимостей.
  3. Отдавайте предпочтение свободному сцеплению.

Образец кода

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

Правильно

Обнаружение

Для поиска ссылок на классы мы можем использовать практически любой линтер. Мы не должны злоупотреблять, поскольку многие виды использования могут быть ложными.

Теги

  • Связь

Вывод

Зависимости от интерфейсов делают систему менее связанной и, следовательно, более расширяемой и тестируемой.

Интерфейсы меняются реже, чем конкретные реализации.

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

связи



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





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

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

Майкл Фезерс



Великие цитаты о программной инженерии
Иногда короткая мысль может родить потрясающие идеи. medium.com



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