Вонючий Код (Рефакторинг М. Фаулера)

Всем привет. Небольшая шпаргалка для новичков и всех, кто забыл, по книге Рефакторинг.

Улучшение существующего кода Мартин Фаулер .



За что? Когда и как?

Не хочу здесь углубляться, потому что.

все зависит от многих факторов: знаний, необходимости, сроков, конкретного проекта и т. д. и т. п.

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



Код с запахом

От чего нужно избавиться в процессе рефакторинга и при написании новых программ.

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

  2. Длинный метод.
  3. Отличный класс.

  4. Длинный список параметров.

  5. Дивергентные модификации.

    Если при добавлении нового функционала вам придется модифицировать несколько методов и значительную часть кода в классе.

  6. Стрельба по выстрелу.

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

  7. Завистливые функции.

    Методу больше не интересен класс, в котором он находится, а другой.

  8. Группы данных.

    Похожие группы данных в разных частях кода.

  9. Одержимость элементарными типами.

  10. Операторы переключения типов.

    Не будем забывать об ООП.

  11. Иерархии параллельного наследования.

    Дублирующийся код.

  12. Ленивый класс.

    Не используется или содержит мало методов (оставшихся после рефакторинга/проектирования).

  13. Теоретическое сообщество.

    Вредно и переизбыток абстракций.

  14. Временное поле.

    Если в классе есть переменные, которые используются в одном методе из пяти, то лучше передать эту переменную этому самому методу через параметр, а не через конструктор или какой-то другой метод.

  15. Цепочка сообщений.

    Глубокая последовательность обращений к необходимой информации через объекты по иерархии классов.

  16. Посредник.

    Класс делегирует большую часть своих методов другому классу.

  17. Неуместная близость.

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

    При наследовании подклассы должны знать минимально необходимую информацию о родителе.

  18. Альтернативные классы с разными интерфейсами.

    Дублирование логики.

  19. Неполнота библиотечного класса.

    Не бойтесь расширять функциональность классов библиотеки: расширять методы или украшать объект класса библиотеки.

  20. Классы данных.

    Разделите на логические единицы.

    Доступ к данным изменений должен быть значимым.

  21. Отказ от наследства.

    Если наследнику нужна лишь небольшая часть информации (данных, методов) о родителе.

  22. Комментарии.

    Свидетельства запаха кода, который необходимо реорганизовать.

    Возможно код остаётся для будущего рефакторинга или описывает сложные манипуляции

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

А с учетом опыта, что-то свое.

Читайте технику: Методы создания .



Какая прибыль.

Простота поддержки и понимания кода, а также написания тестов.



Послесловие

Добавлю, что это всего лишь минимум.

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

Теги: #рефакторинг #Фаулер #шпаргалка #Идеальный код #дизайн и рефакторинг

Вместе с данным постом часто просматривают: