Евгений Кривошеев, skilltrek

42
Осознанность рефакторинга Евгений Кривошеев,

Upload: diana-dymolazova

Post on 22-Jun-2015

658 views

Category:

Technology


1 download

DESCRIPTION

Ключ к быстрому и эффективному проектированию систем

TRANSCRIPT

Page 1: Евгений Кривошеев, SkillTrek

Осознанность рефакторинга

Евгений Кривошеев,

Page 2: Евгений Кривошеев, SkillTrek

Цели доклада •  Участники смогут принимать осознанные инженерные решения

•  Участники смогут обеспечить высокое качество дизайна

•  Участники решат как минимум одну нерешенную практическую проблему

Page 3: Евгений Кривошеев, SkillTrek

Сценарий

Page 4: Евгений Кривошеев, SkillTrek

Понятие качества Scope, Defects

Time Resources Quality

Page 5: Евгений Кривошеев, SkillTrek

Сценарий

Page 6: Евгений Кривошеев, SkillTrek

Обоснование через качество Не уверен, что делаю в коде так, потому что надо…

…или потому что так написано в книжке

Page 7: Евгений Кривошеев, SkillTrek

Кейсы рефакторингов // extract method

Page 8: Евгений Кривошеев, SkillTrek

Кейсы рефакторингов // move method

Page 9: Евгений Кривошеев, SkillTrek

Кейсы рефакторингов // extract class

Page 10: Евгений Кривошеев, SkillTrek

Кейсы рефакторингов // creator pattern → factory pattern

Page 11: Евгений Кривошеев, SkillTrek

Кейсы участников • Напишите на листочке последнюю сложную или нерешенную проблему

• Последний holy war • Проблема любая, но желательно в контексте дизайна / рефакторинга

• В конце Вы решите её для себя

Page 12: Евгений Кривошеев, SkillTrek

Сценарий

Page 13: Евгений Кривошеев, SkillTrek

Задача рефакторинга

Привести дизайн к желаемым характеристикам

Какие характеристики желаемые?*

*→быть фабрике или создателю?

Page 14: Евгений Кривошеев, SkillTrek

Сценарий

Page 15: Евгений Кривошеев, SkillTrek

Место QA в требованиях

Page 16: Евгений Кривошеев, SkillTrek

Важность простоты

Page 17: Евгений Кривошеев, SkillTrek

Простота vs Понятность*

Page 18: Евгений Кривошеев, SkillTrek

Влияние D.M. на QA

Дизайн должен реализовать требования

Page 19: Евгений Кривошеев, SkillTrek

Рефакторинги и QA

Рефакторинг Гибкость Простота Понимаемость Тестабельность extract method extract class move method introduce factory

↑ или ↓ или ?

Меняя дизайн, меняем и QA

Page 20: Евгений Кривошеев, SkillTrek

Сценарий

Page 21: Евгений Кривошеев, SkillTrek

Корреляции требований

Page 22: Евгений Кривошеев, SkillTrek

Корреляции требований

Page 23: Евгений Кривошеев, SkillTrek

Корреляции требований

Требования зачастую конфликтуют.

Дизайн – это компромисс.*

*За все приходится платить

Page 24: Евгений Кривошеев, SkillTrek

Конфликты требований интеллект

готовка

уборка TCO

специальные навыки

Ирка Петрова Саша Грей

Page 25: Евгений Кривошеев, SkillTrek

Design is a tradeoff Factory Pattern

Cache Pattern

Page 26: Евгений Кривошеев, SkillTrek

Design is a tradeoff

Нет «хорошего» и «плохого» дизайна.

Есть подходящий и неподходящий.

Page 27: Евгений Кривошеев, SkillTrek

Так быть или не быть? Factory Pattern

Page 28: Евгений Кривошеев, SkillTrek

Сценарий

Page 29: Евгений Кривошеев, SkillTrek

Минутка матана

<матан>

<a>Вторая теорема Гёделя о неполноте</a>

</матан>

Page 30: Евгений Кривошеев, SkillTrek

Метамодель дизайна

Page 31: Евгений Кривошеев, SkillTrek

Дизайн через требования

Инкапсулируем ответственность в класс

Инлайнируем ответственность

Гибкость Простота

Функционал вариабелен (ось вариативности)

Функционал стабилен

Page 32: Евгений Кривошеев, SkillTrek

Полнота требований

Функционал вариабелен (ось вариативности)

Функционал стабилен ?  

Page 33: Евгений Кривошеев, SkillTrek

Метамодель требований

BDUF YAGNI

Page 34: Евгений Кривошеев, SkillTrek

Метамодель требований

BDUF YAGNI ?  

Page 35: Евгений Кривошеев, SkillTrek

Метамодель процесса

Page 36: Евгений Кривошеев, SkillTrek

Сценарий

Page 37: Евгений Кривошеев, SkillTrek

Обоснованный дизайн

Инкапсулируем ответственность в класс

Инлайнируем ответственность

Гибкость Простота

Функционал вариабелен (ось вариативности)

Функционал стабилен ?

BDUF YAGNI ??

Page 38: Евгений Кривошеев, SkillTrek

Обоснованный дизайн

Наличие java interface в коде в итоге обосновывается бизнес-моделью компании

Page 39: Евгений Кривошеев, SkillTrek

Сценарий

Page 40: Евгений Кривошеев, SkillTrek

Отлить в граните •  Рефакторинг – направленное обоснованное изменение дизайна.

•  Дизайн – это компромисс. За все нужно платить.

•  Необходимо выявить конфликт ожиданий.

•  Для принятия решения следует подняться выше на уровень абстракции.

•  Решения локальны и специфичны.

Page 41: Евгений Кривошеев, SkillTrek

Персональный кейс

Получилось ли решить Ваш кейс?*

*Если нет, продолжим за

Page 42: Евгений Кривошеев, SkillTrek

Контакты

Евгений Кривошеев, [email protected]

«Тяжело в учении – легко в бою» SkillTrek – это корпоративный центр компетенций, где специалисты получают востребованные на рынке знания и навыки в условиях реальных проектов с выбором удобной им загрузки