- Тренинг
- Место
Для кого
- Разработчики, желающие с удовольствием работать с кодом и безопасно менять код, не боясь что-то сломать
- Тимлиды и руководители проектов, желающие повысить вовлеченность команд и обеспечивать высочайшее качество продукта в условиях непрерывного потока изменений требований
Цели
Для отсутствия страха изменений требований и способности непрерывно обеспечивать поддерживаемость продукта разработчики:
- поймут причины технического долга и смогут на практике обоснованно оперировать ими в оценках затрат
- осознают характеристики и метрики поддерживаемого дизайна и смогут на практике двигаться к нему через рефакторинг
- узнают типовые проблемные анти-паттерны в коде («smells») и смогут идентифицировать и избавиться от них в своем проекте
- узнают типовые трансформации («refactorings») из общепризнанных каталогов и смогут оперировать ими в общении и использовать эти трансформации в своем проекте
- поймут процессные подходы к рефакторингу и смогут обоснованно выбирать из них в своей команде
- узнают про оценку рефакторинга и смогут эффективно закладывать ее на планировании итерации
- узнают, как вести рефакторинг маленькими шажками, чтобы обеспечить безопасность и уверенность
Для обеспечения стабильных поставок и непрерывной поддержки качества продукта тимлиды и PM:
- поймут процессные паттерны внедрения рефакторинга и смогут внедрить практику в своей команде
- поймут ключевые метрики дизайна и кода и смогут внедрить объективную оценку поддерживаемости своего продукта
- узнают каталоги анти-паттернов («smells») и трансформаций («refactorings») и смогут внедрить единый словарь для эффективного общения в своей команде
- узнают про оценку рефакторинга и смогут эффективно закладывать ее на планировании итерации
Опыт на старте
- желателен опыт промышленной разработки от 1 года
- обязательны знания и навыки в объеме курса «Unit Testing»
- обязательны знания и навыки в объеме курса «Дизайн и проектирование в Agile»
Программа
- Обзор тренинга
- Знакомство и сбор проблем
- Разбивка по парам
- Определение и цели рефакторинга
- Пример: Неотформатированный текст
- Технический долг
- .Симптомы технического долга
- Причины технического долга
- Метрики дизайна
- Что такое поддерживаемый дизайн
- Паттерны внедрения
- Процессная практика технического налога
- Паттерны проведения трансформации
- Рефакторинг «снизу вверх» и «сверху вниз»
- Изоляция при поэтапном рефакторинге
- Окружение для рефакторинга
- Анти-паттерны кода («smells»)
- Внутри классов
- Между классами
- Практика: анализ legacy-кода на антипаттерны
- Трансформации кода («refactorings»)
- Обзор идиом трансформации
- Sprout method & Wrap method
- Composing Methods
- Практика: рефакторинг legacy-кода
- Moving features between objects
- Organizing data
- Simplifying conditional expressions
- Практика: рефакторинг legacy-кода
- Making method call simpler
- Dealing with generalization
- Практика: рефакторинг legacy-кода
Завершение и разбор вопросов
В чем отличие от других тренингов по рефакторингу
Мы фокусируемся на конкретных понятных целях наших участников, поэтому все темы рассматриваются через вопросы практического применения. Участники в рамках практики сами почуствуют специфику и смогут сделать самостоятельные выводы. Мы обсудим именно Ваши проблемы и пожелания. Так же мы точно знаем, что не существует идеальных практик, поэтому обязательно обсудим как плюсы, так и минусы каждой практики. Наши тренера – практикующие разработчики и архитекторы, поэтому они смогут поделиться проблемами и способами решения именно для Вашего случая.
Зачем нужен курс бизнесу
Любая востребованная система постоянно развивается и меняется. Статичны только те системы, которыми никто не пользуется. Поэтому любая успешная система требует постоянной и непрерывной переработки, и именно она приносит основную боль развития проекта. Обеспечить внешнее качество продукта и внутреннюю поддерживаемость на практике оказывается крайне нелегко. И начиная с определенного момента, система становится абсолютно непонятной, непрозрачной и не принимает изменения. В этой ситуации быстрое накопление технического долга, снижение внешнего качества мгновенно убивают рентабельность проекта.
Зачем нужен курс специалисту
Если посмотреть на такие проекты со стороны команды, то для разработчиков нет ничего более тяжелого и унылого, чем ковыряться в авгиевых конюшнях накопленной кодовой базы. Основное желание – все сжечь или свалить на другой проект. Именно поэтому для успеха проекта практика рефакторинга жизненно важна. Если корректно интегрировать ее в проект, можно значительно повысить гибкость системы при изменении требований и значительно снизить стоимость поддержки. А разработчику всегда гораздо более комфортно работать с чистым понятным кодом, и это резко повышает продуктивность команды. И помните – Ваш код тоже обязательно станет legacy, это просто вопрос времени.
Тренер
Александр МартюшевСистемный архитектор в компании АСКОН, сертифицированный Scrum-мастер. |