Содержание
- 2. Refactoring Martin Fowler Рефакторинг (сущ.) Изменение во внутренней структуре программного обеспечения, имеющее целью облегчить понимание его
- 3. Example double PaymentAmount() { if ( quantity if ( months > 12 ) return 0; //
- 4. Why Refactor? Рефакторинг улучшает результаты проектирования ПО - без рефакторинга структура проекта будет ухудшаться, т.к. разработчики
- 5. When Refactor? Правило «Трех страйков» - если, минимум, в 3 местах дублируется код, применяйте рефакторинг При
- 6. Principles in Refactoring Рефакторинг должен быть: Систематичный Поэтапный Безопасный Польза рефакторинга: В большинстве случаев объем кода
- 7. Problems with Refactoring Рефакторить аспекты, связанные с БД, гораздо сложнее Некоторые рефакторинги требуют серьезных изменений интерфейсов
- 8. Refactoring Vs. Optimization Код меняется, а функциональность не меняется При рефакторинге код становится понятнее; при оптимизации
- 9. “Bad Smells” in Code Дублирование кода (Duplicated Code) Ситуации: - один и тот же участок кода
- 10. “Bad Smells” in Code Большой класс (Large Class) Часто из-за больших классов увеличивается сцепление и уменьшается
- 11. “Bad Smells” in Code Стрельба дробью (Shotgun Surgery) При выполнении любых модификаций приходится вносить много мелких
- 12. “Bad Smells” in Code Одержимость элементарными типами (Primitive Obsession) Избегание методики обертки данных в классы Операторы
- 13. “Bad Smells” in Code Ленивый класс (Lazy Class) Класс, существование которого уже не целесообразно (например, он
- 14. “Bad Smells” in Code Временное поле (Temporary Field) В некотором объекте свойство устанавливается / меняется только
- 15. “Bad Smells” in Code Неуместная близость (Inappropriate Intimacy) Пара классов, которые слишком много знают и позволяют
- 16. “Bad Smells” in Code Классы данных (Data Class) Классы, которые содержат только свойства, геттеры и сеттеры
- 17. Refactorings Реорганизация функций и данных Составление методов Перемещение функций между объектами Реорганизация данных Упрощение вызовов методов
- 18. Refactorings Составление методов Выделение метода Встраивание метода Встраивание временной переменной Замена временной переменной вызовом метода Введение
- 19. Extract Method Описание: Есть участок кода, который можно сгруппировать. Действие: Поместить участок кода в метод, название
- 20. Extract Method (Example)
- 21. Refactorings Описание: Тело метода столь же понятно, как и его название. Действие: Поместить тело метода в
- 22. Refactorings Описание: Есть временная переменная, к-ой один раз присваивается простое выражение, и она мешает проведению «Выделения
- 23. Refactorings Описание: временная переменная используется для хранения значения выражения Действие: преобразовать выражение в метод. Заменить все
- 24. Refactorings Описание: имеется сложное выражение Действие: поместить результат выражения или его части во временную переменную, имя
- 25. Refactorings Описание: имеется временная переменная, которой неоднократно присваивается значение, но это не переменная цикла и не
- 26. Refactorings Описание: выполняется присваивание параметру Действие: заменить это временной переменной Прием «Удаление присваиваний параметрам» double discount(
- 27. Refactorings Перемещение функций между объектами Перемещение метода Перемещение поля Выделение класса Встраивание класса Сокрытие делегирования Удаление
- 28. Refactorings Описание: объект-клиент обращается к делегируемому классу объекта Действие: создать на объекте-сервере методы, скрывающие делегирование Прием
- 29. Refactorings Реорганизация данных Самоинкапсуляция поля Замена значения объектом Замена значения ссылкой (и наоборот) Замена массива объектом
- 30. Refactorings Упрощение вызовов методов Переименование метода Добавление / удаление параметра Разделение запроса и модификатора Параметризация метода
- 31. Refactorings Описание: Несколько методов выполняют сходные действия, но с разными значениями, содержащимися в теле метода Действие:
- 32. Refactorings Реорганизация условных выражений Декомпозиция условного оператора Консолидация условного выражения Консолидация дублирующихся условных фрагментов Удаление управляющего
- 33. Refactorings Описание: имеется сложная условная цепочка проверок Действие: выделить методы из условия, блоков THEN и ELSE
- 34. Refactorings Описание: имеется ряд проверок условия, дающих одинаковый результат Действие: объединить их в одно условное выражение
- 35. Refactorings Описание: один и тот же фрагмент кода присутствует во всех ветвях условного выражения Действие: переместить
- 36. Refactorings Описание: имеется переменная-флаг Действие: использовать вместо нее break или return Прием «Удаление управляющего флага»
- 37. Refactorings Реорганизация обобщений Подъем поля / Подъем метода Спуск поля / Спуск метода Выделение подкласса Выделение
- 38. Refactorings Описание: в подклассах есть методы с одинаковыми результатами Действие: переместить их в родительский класс Прием
- 40. Скачать презентацию