Евгений Кривошеев, SkillTrek
-
Upload
diana-dymolazova -
Category
Technology
-
view
659 -
download
1
description
Transcript of Евгений Кривошеев, SkillTrek
![Page 1: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/1.jpg)
Осознанность рефакторинга
Евгений Кривошеев,
![Page 2: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/2.jpg)
Цели доклада • Участники смогут принимать осознанные инженерные решения
• Участники смогут обеспечить высокое качество дизайна
• Участники решат как минимум одну нерешенную практическую проблему
![Page 3: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/3.jpg)
Сценарий
![Page 4: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/4.jpg)
Понятие качества Scope, Defects
Time Resources Quality
![Page 5: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/5.jpg)
Сценарий
![Page 6: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/6.jpg)
Обоснование через качество Не уверен, что делаю в коде так, потому что надо…
…или потому что так написано в книжке
![Page 7: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/7.jpg)
Кейсы рефакторингов // extract method
![Page 8: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/8.jpg)
Кейсы рефакторингов // move method
![Page 9: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/9.jpg)
Кейсы рефакторингов // extract class
![Page 10: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/10.jpg)
Кейсы рефакторингов // creator pattern → factory pattern
![Page 11: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/11.jpg)
Кейсы участников • Напишите на листочке последнюю сложную или нерешенную проблему
• Последний holy war • Проблема любая, но желательно в контексте дизайна / рефакторинга
• В конце Вы решите её для себя
![Page 12: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/12.jpg)
Сценарий
![Page 13: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/13.jpg)
Задача рефакторинга
Привести дизайн к желаемым характеристикам
Какие характеристики желаемые?*
*→быть фабрике или создателю?
![Page 14: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/14.jpg)
Сценарий
![Page 15: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/15.jpg)
Место QA в требованиях
![Page 16: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/16.jpg)
Важность простоты
![Page 17: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/17.jpg)
Простота vs Понятность*
![Page 18: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/18.jpg)
Влияние D.M. на QA
Дизайн должен реализовать требования
![Page 19: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/19.jpg)
Рефакторинги и QA
Рефакторинг Гибкость Простота Понимаемость Тестабельность extract method extract class move method introduce factory
↑ или ↓ или ?
Меняя дизайн, меняем и QA
![Page 20: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/20.jpg)
Сценарий
![Page 21: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/21.jpg)
Корреляции требований
![Page 22: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/22.jpg)
Корреляции требований
![Page 23: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/23.jpg)
Корреляции требований
Требования зачастую конфликтуют.
Дизайн – это компромисс.*
*За все приходится платить
![Page 24: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/24.jpg)
Конфликты требований интеллект
готовка
уборка TCO
специальные навыки
Ирка Петрова Саша Грей
![Page 25: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/25.jpg)
Design is a tradeoff Factory Pattern
Cache Pattern
![Page 26: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/26.jpg)
Design is a tradeoff
Нет «хорошего» и «плохого» дизайна.
Есть подходящий и неподходящий.
![Page 27: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/27.jpg)
Так быть или не быть? Factory Pattern
![Page 28: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/28.jpg)
Сценарий
![Page 29: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/29.jpg)
Минутка матана
<матан>
<a>Вторая теорема Гёделя о неполноте</a>
</матан>
![Page 30: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/30.jpg)
Метамодель дизайна
![Page 31: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/31.jpg)
Дизайн через требования
Инкапсулируем ответственность в класс
Инлайнируем ответственность
Гибкость Простота
Функционал вариабелен (ось вариативности)
Функционал стабилен
![Page 32: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/32.jpg)
Полнота требований
Функционал вариабелен (ось вариативности)
Функционал стабилен ?
![Page 33: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/33.jpg)
Метамодель требований
BDUF YAGNI
![Page 34: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/34.jpg)
Метамодель требований
BDUF YAGNI ?
![Page 35: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/35.jpg)
Метамодель процесса
![Page 36: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/36.jpg)
Сценарий
![Page 37: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/37.jpg)
Обоснованный дизайн
Инкапсулируем ответственность в класс
Инлайнируем ответственность
Гибкость Простота
Функционал вариабелен (ось вариативности)
Функционал стабилен ?
BDUF YAGNI ??
![Page 38: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/38.jpg)
Обоснованный дизайн
Наличие java interface в коде в итоге обосновывается бизнес-моделью компании
![Page 39: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/39.jpg)
Сценарий
![Page 40: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/40.jpg)
Отлить в граните • Рефакторинг – направленное обоснованное изменение дизайна.
• Дизайн – это компромисс. За все нужно платить.
• Необходимо выявить конфликт ожиданий.
• Для принятия решения следует подняться выше на уровень абстракции.
• Решения локальны и специфичны.
![Page 41: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/41.jpg)
Персональный кейс
Получилось ли решить Ваш кейс?*
*Если нет, продолжим за
![Page 42: Евгений Кривошеев, SkillTrek](https://reader033.fdocuments.net/reader033/viewer/2022052507/55878ca9d8b42a3b5d8b45bf/html5/thumbnails/42.jpg)
Контакты
Евгений Кривошеев, [email protected]
«Тяжело в учении – легко в бою» SkillTrek – это корпоративный центр компетенций, где специалисты получают востребованные на рынке знания и навыки в условиях реальных проектов с выбором удобной им загрузки