Экстремальное программирование. Рефакторинг

Содержание

Слайд 2

История: зарождение термина 1971 - появление языка Forth 1980s - появление термина "factoring"

История: зарождение термина

1971 - появление языка Forth
1980s - появление термина "factoring"

Слайд 3

История: зарождение термина

История: зарождение термина

Слайд 4

История: распространение 1990 - Opdyke, William F.; Johnson, Ralph E. "Refactoring:

История: распространение

1990 - Opdyke, William F.; Johnson, Ralph E. "Refactoring: An

Aid in Designing Application Frameworks and Evolving Object-Oriented Systems".
1992 - Opdyke, William F. Refactoring Object-Oriented Frameworks
1999 - Fowler, Martin Refactoring: Improving the design of existing code.
Слайд 5

Технический долг

Технический долг

Слайд 6

Чистый код Проходит все тесты Очевиден для других программистов Не содержит

Чистый код

Проходит все тесты
Очевиден для других программистов
Не содержит дублирования
Содержит минимум классов

и других движущихся частей
Легче и дешевле поддерживать
Слайд 7

Запахи кода: раздувальщики Длинный метод Большой класс Одержимость элементарными типами Длинный список параметров Группы данных

Запахи кода: раздувальщики

Длинный метод
Большой класс
Одержимость элементарными типами
Длинный список параметров
Группы данных

Слайд 8

Запахи кода: нарушители объектного дизайна Операторы switch Временное поле Отказ от

Запахи кода: нарушители объектного дизайна

Операторы switch
Временное поле
Отказ от наследства
Альтернативные классы с

разными интерфейсами
Слайд 9

Запахи кода: утяжелители изменений Расходящиеся модификации Стрельба дробью Параллельные иерархии наследования

Запахи кода: утяжелители изменений

Расходящиеся модификации
Стрельба дробью
Параллельные иерархии наследования

Слайд 10

Запахи кода: замусориватели Комментарии Дублирование кода Ленивый класс Класс данных Мертвый код Теоретическая общность

Запахи кода: замусориватели

Комментарии
Дублирование кода
Ленивый класс
Класс данных
Мертвый код
Теоретическая общность

Слайд 11

Запахи кода: опутыватели связями Завистливые функции Неуместная близость Цепочка вызовов Посредник Неполнота библиотечного класса

Запахи кода: опутыватели связями

Завистливые функции
Неуместная близость
Цепочка вызовов
Посредник
Неполнота библиотечного класса

Слайд 12

Когда рефакторить: правило трех Делая что-то в первый раз, вы просто

Когда рефакторить: правило трех

Делая что-то в первый раз, вы просто это

делаете.
Делая что-то аналогичное во второй раз, вы морщитесь от необходимости повторения, но все-таки повторяете то же самое.
Делая что-то похожее в третий раз, вы начинаете рефакторинг.
Слайд 13

Когда рефакторить Когда делаете новую фичу Когда исправляете баги Во время код-ревью

Когда рефакторить

Когда делаете новую фичу
Когда исправляете баги
Во время код-ревью

Слайд 14

Автоматический рефакторинг

Автоматический рефакторинг