SlideShare a Scribd company logo
Рефакторинг

Бындю Александр
Директор ByndyuSoft
Агенда
1.   Проблемный код
2.   Что такое рефакторинг?
3.   Когда надо рефакторить?
4.   Живой пример
5.   На что обратить внимание?
Программный код
  выполняется компьютером, а

пишется для людей
Refactoring
Refactoring
Refactoring
Проблематика
1.   Неделю сидел в отладке разбирался в коде
2.   Ничего не трогайте пока работает
3.   Только Петя знает, почему это работает
4.   Проще всё заново написать
Цели рефакторинга
1. Сделать код легче для понимания
2. Обобщить код, убрать дублирование
3. Уменьшение связности
4. Уменьшить технические долги

5. Привести дизайн к шаблонам
   проектирования
Рефакторинг НЕ делает

1. Оптимизация производительности
2. Изменение логики работы системы
3. Исправление багов


          Не смешивайте
       это с рефакторингом
Уже пора рефакторить?
1.   Magic-strings, типа int k = 42
2.   Переменные i1, ii, iii, i2, k2, s2
3.   Длинные методы
4.   Дублирование в коде
5.   Комментарии в коде
6.   Различное оформление кода
7.   Многократно вложенные if, while, switch
8.   Цикл в цикле в цикле в цикле в цикле в
Динамика

долгосрочно
стабильно



              быстрый старт
Постоянный рефакторинг



Только                   Никогда не
рефакторю                рефакторю
Живой пример
Как сделать этот процесс
     эффективнее?
Обратите внимание

Движение идет небольшими шагами

1. Запуск модульных тестов
2. Коммиты в систему контроля версий
Берите готовое!




                  +
Успехов на практике!


    Бындю Александр
   Директор ByndyuSoft

 twitter @alexanderbyndyu

More Related Content

PDF
Модульное тестирование и TDD в .NET
PDF
Эволюция управления зависимостями в коде
PDF
Переход от монолитной архитектуры к распределенной
PDF
Максим Гуртовенко - The future is wild | HappyDev'12
PPT
Приемочные тесты на огурце
PDF
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
PPTX
Agile: разработка + тестирование
PDF
История и принципы бережливого производства ПО
Модульное тестирование и TDD в .NET
Эволюция управления зависимостями в коде
Переход от монолитной архитектуры к распределенной
Максим Гуртовенко - The future is wild | HappyDev'12
Приемочные тесты на огурце
Как работать с legacy проектом, которому больше10 лет? |Денис Воскобойник
Agile: разработка + тестирование
История и принципы бережливого производства ПО

What's hot (20)

PPTX
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
PPTX
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
PDF
Практическое применение принципа инверсии зависимостей на примере Ruby
PPTX
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
PPTX
Спецкурс-2015. Занятие 05. Системы контроля версий
PDF
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
PPTX
МиСПИСиТ (разработка программного модуля)
PPTX
Приемы эффективной разработки документации к ПО и техническим системам
PDF
Выбираем стратегию создания бранчей
PDF
Архитектурные решения при создании облачного сервиса на Asp.Net
PDF
JEE Conf: Архитектура Android приложений: полезные и вредные советы
PPTX
Построение процесса тестирования
PPTX
Tech talk Angular 2
PPT
Кейс SKCG: Викторина INTEL
PDF
грунский алексей. практика разработки по стандарту Wcag 2.0
PDF
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
ODP
Часть 1: Введение
PPTX
Tdd from the middle
PDF
Vladimir Obrizan "Ecosystem for reliable Python programming"
PDF
Дмитрий Евдокимов
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Практическое применение принципа инверсии зависимостей на примере Ruby
Майстер-клас "Автоматизоване тестування. З чого почати?" (частина 1)
Спецкурс-2015. Занятие 05. Системы контроля версий
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...
МиСПИСиТ (разработка программного модуля)
Приемы эффективной разработки документации к ПО и техническим системам
Выбираем стратегию создания бранчей
Архитектурные решения при создании облачного сервиса на Asp.Net
JEE Conf: Архитектура Android приложений: полезные и вредные советы
Построение процесса тестирования
Tech talk Angular 2
Кейс SKCG: Викторина INTEL
грунский алексей. практика разработки по стандарту Wcag 2.0
серёжа пономарёв @ Kuchyn.com.ua junior java developer программируем по-взро...
Часть 1: Введение
Tdd from the middle
Vladimir Obrizan "Ecosystem for reliable Python programming"
Дмитрий Евдокимов
Ad

Viewers also liked (14)

PPTX
ASP.NET MVC
PPTX
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
PDF
Имплементация инженерных практик для 1C
PPTX
Why do I hate Hibernate?
PPTX
Lean startup
PPTX
Как создать концепцию продукта в виде Lean Canvas
PDF
Про custdev и lean startup. Generation S. Лето 2014
PDF
Lean Startup. Tools. Lean Canvas. Netology. 271114
PPTX
Бизнес-модель стартапа, Lean Canvas, Customer Development
PDF
Lean Canvas (Russian Version)
PDF
Акселерационная программа МетаБета для Tolstoy summer camp '13
PPTX
Дизайн-мышление. Гайд по процессу / Design Thinking Guide / Russian
PPTX
ASP.NET Quick Wins - 20 Tips and Tricks To Shift Your Application into High Gear
PPT
QA in Agile
ASP.NET MVC
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Имплементация инженерных практик для 1C
Why do I hate Hibernate?
Lean startup
Как создать концепцию продукта в виде Lean Canvas
Про custdev и lean startup. Generation S. Лето 2014
Lean Startup. Tools. Lean Canvas. Netology. 271114
Бизнес-модель стартапа, Lean Canvas, Customer Development
Lean Canvas (Russian Version)
Акселерационная программа МетаБета для Tolstoy summer camp '13
Дизайн-мышление. Гайд по процессу / Design Thinking Guide / Russian
ASP.NET Quick Wins - 20 Tips and Tricks To Shift Your Application into High Gear
QA in Agile
Ad

Similar to Refactoring (6)

PDF
Рефакторинг
PPTX
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
PDF
Refactoring
PDF
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
PPTX
разработка бизнес приложений (8)
Рефакторинг
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Refactoring
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
разработка бизнес приложений (8)

More from Alexander Byndyu (20)

PDF
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
PDF
Применение low-code платформ в энтерпрайзе
PDF
Антихрупкость в IT или как полюбить изменения
PDF
Карта гипотез как метод стратегического планирования
PPTX
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
PDF
История о том, как техническое задание подменяет цель проекта
PDF
Шпаргалка по IT-миру для предпринимателя
PDF
Микросервисы, чистый PaaS и конкурс Мисс Россия
PDF
IT-директор на аутсорсе
PDF
Бизнес-гибкость через микросервисную архитектуру
PDF
Impact Mapping на практике v2
PDF
Кнопочное мышление против целостного IT-продукта
PDF
Пять самых важных составляющих процесса выпуска продуктов
PDF
Пять самых важных составляющих процесса выпуска проектов
PDF
Час Кода 2015
PDF
Impact mapping in practice
PPTX
Impact Mapping на практике
PDF
Customer satisfaction для программистов
PDF
CQRS на практике. В поиске точки масштабирования и новых метафор
PDF
Как размножается Sphinx
Инфраструктура для совместной предпроктной работы IT-компаний и реального ...
Применение low-code платформ в энтерпрайзе
Антихрупкость в IT или как полюбить изменения
Карта гипотез как метод стратегического планирования
Как перейти от проектного мышления к продуктовому. Опыт из заказной разработки
История о том, как техническое задание подменяет цель проекта
Шпаргалка по IT-миру для предпринимателя
Микросервисы, чистый PaaS и конкурс Мисс Россия
IT-директор на аутсорсе
Бизнес-гибкость через микросервисную архитектуру
Impact Mapping на практике v2
Кнопочное мышление против целостного IT-продукта
Пять самых важных составляющих процесса выпуска продуктов
Пять самых важных составляющих процесса выпуска проектов
Час Кода 2015
Impact mapping in practice
Impact Mapping на практике
Customer satisfaction для программистов
CQRS на практике. В поиске точки масштабирования и новых метафор
Как размножается Sphinx

Refactoring