Что такое legacy? - · pdf file3 software architecture in practice, 3rd edition, bass,...
TRANSCRIPT
![Page 1: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/1.jpg)
1
![Page 2: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/2.jpg)
Что такое legacy?
2
![Page 3: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/3.jpg)
Что такое legacy?
• То, что написано не нами
2
![Page 4: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/4.jpg)
Что такое legacy?
То, что написано не нами
3
![Page 5: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/5.jpg)
Что такое legacy?
То, что написано не намиАрхитектуры нет или плохая архитектура
4
![Page 6: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/6.jpg)
Что такое legacy?
То, что написано не намиАрхитектуры нет или плохая архитектураСлабоструктурированный или слишком запутанный код
5
![Page 7: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/7.jpg)
Что такое legacy?
То, что написано не намиАрхитектуры нет или плохая архитектураСлабоструктурированный или слишком запутанный кодWTF/ в час превышает 9000
6
![Page 8: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/8.jpg)
Как это Legacy мерять?
7
![Page 9: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/9.jpg)
Как это Legacy мерять?
= T H 1
1 T - время техдолга в часах, H - часовая ставка разработчика
8
![Page 10: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/10.jpg)
Но как определить T?
9
![Page 11: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/11.jpg)
Что есть тех.долг?
10
![Page 12: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/12.jpg)
Что есть тех.долг?
• Ошибки и уязвимости
10
![Page 13: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/13.jpg)
Что есть тех.долг?
• Ошибки и уязвимости
• Проблемы сопровождаемости
10
![Page 14: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/14.jpg)
Что есть тех.долг?
• Ошибки и уязвимости
• Проблемы сопровождаемости
• Дублирование кода
10
![Page 15: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/15.jpg)
Что есть тех.долг?
• Ошибки и уязвимости
• Проблемы сопровождаемости
• Дублирование кода
• Низкий процент покрытия тестами
10
![Page 16: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/16.jpg)
Тулы для оценки
SonarQube
11
![Page 17: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/17.jpg)
12
![Page 18: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/18.jpg)
Тулы для оценки
SonarQubeMobSF/Akana/Whatever Security Analysis tool
13
![Page 19: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/19.jpg)
14
![Page 20: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/20.jpg)
Тулы для оценки
SonarQubeMobSF/Akana/Whatever Security Analysis toolArchitecture analysis tool
15
![Page 21: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/21.jpg)
Тулы для оценки
SonarQubeMobSF/Akana/Whatever Security Analysis toolArchitecture analysis tool
16
![Page 22: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/22.jpg)
Что такое архитектура?
Архитектура - это набор структур, состоящих из компонентов и связей между ними, а также свойств одних и вторых, определяющих свойства системы 2
2 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley
17
![Page 23: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/23.jpg)
Что это к чертям значит?
18
![Page 24: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/24.jpg)
Что это к чертям значит?
• Архитектура - ключ к свойствам системы, которые важны пользователю
18
![Page 25: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/25.jpg)
Что это к чертям значит?
• Архитектура - ключ к свойствам системы, которые важны пользователю
• Или владелец продукта думает, что они важны
18
![Page 26: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/26.jpg)
Что это к чертям значит?
• Архитектура - ключ к свойствам системы, которые важны пользователю
• Или владелец продукта думает, что они важны
• То есть плохих или хороших архитектур не бывает, они либо подходят, либо не подходят под требования
18
![Page 27: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/27.jpg)
Когда нужно думать про архитектуру?
19
![Page 28: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/28.jpg)
Когда нужно думать про архитектуру?
• Если вы проверяете технологию, об архитектуре можно не думать
19
![Page 29: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/29.jpg)
Когда нужно думать про архитектуру?
• Если вы проверяете технологию, об архитектуре можно не думать
• Если вы пишите скрипт для отсылки почты по списку адресов, об архитектуре можно не думать
19
![Page 30: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/30.jpg)
Когда нужно думать про архитектуру?
• Если вы проверяете технологию, об архитектуре можно не думать
• Если вы пишите скрипт для отсылки почты по списку адресов, об архитектуре можно не думать
• Во всех остальных случаях, про архитектуру надо думать
19
![Page 31: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/31.jpg)
Какие наши целевые свойства?
20
![Page 32: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/32.jpg)
Какие наши целевые свойства?
• Быть производительным
20
![Page 33: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/33.jpg)
Какие наши целевые свойства?
• Быть производительным
• Быть локализуемым
20
![Page 34: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/34.jpg)
Какие наши целевые свойства?
• Быть производительным
• Быть локализуемым
• Работать оффлайн
20
![Page 35: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/35.jpg)
Какие наши целевые свойства?
• Быть производительным
• Быть локализуемым
• Работать оффлайн
• Быть тестируемым
20
![Page 36: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/36.jpg)
Какие наши целевые свойства?
• Быть производительным
• Быть локализуемым
• Работать оффлайн
• Быть тестируемым
• Быть расширяемым
20
![Page 37: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/37.jpg)
Тестируемость
21
![Page 38: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/38.jpg)
Тестируемость
• Аргументы и возвращаемые значения должны передаваться явно
21
![Page 39: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/39.jpg)
Тестируемость
• Аргументы и возвращаемые значения должны передаваться явно
• Зависимости должны быть переданы явно
21
![Page 40: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/40.jpg)
Тестируемость
• Аргументы и возвращаемые значения должны передаваться явно
• Зависимости должны быть переданы явно
• Зависимости должны быть заменяемы в тестах
21
![Page 41: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/41.jpg)
Расширяемость
22
![Page 42: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/42.jpg)
Расширяемость
• Изменения неизбежны
22
![Page 43: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/43.jpg)
Расширяемость
• Изменения неизбежны
• Сколько стоят реализация изменений:
• Сколько стоит создание механизма для осуществления изменений?
• Сколько стоит осуществление изменения с помощью этого механизма?
22
![Page 44: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/44.jpg)
Расширяемость
Для N похожих изменений примерное уравнение равно:
* <= + * ( )
23
![Page 45: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/45.jpg)
Какие наши целевые свойства?
Быть производительнымБыть локализуемымРаботать оффлайнБыть тестируемымБыть расширяемым
24
![Page 46: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/46.jpg)
Какая архитектура отвечает этим требованиям?
25
![Page 47: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/47.jpg)
Какая архитектура отвечает этим требованиям?
• Clean architecture
25
![Page 48: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/48.jpg)
26
![Page 49: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/49.jpg)
27
![Page 50: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/50.jpg)
Какая архитектура отвечает этим требованиям?
28
![Page 51: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/51.jpg)
Какая архитектура отвечает этим требованиям?
• Clean architecture
28
![Page 52: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/52.jpg)
Какая архитектура отвечает этим требованиям?
• Clean architecture
• Google Android architecture
28
![Page 53: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/53.jpg)
29
![Page 54: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/54.jpg)
Какая архитектура отвечает этим требованиям?
30
![Page 55: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/55.jpg)
Какая архитектура отвечает этим требованиям?
• Clean architecture
30
![Page 56: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/56.jpg)
Какая архитектура отвечает этим требованиям?
• Clean architecture
• Google Android architecture
30
![Page 57: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/57.jpg)
Какая архитектура отвечает этим требованиям?
• Clean architecture
• Google Android architecture
• VIPER
30
![Page 58: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/58.jpg)
Что общего?
31
![Page 59: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/59.jpg)
Что общего?
В строго поделенных на слои системах, слою позволено использовать только слой, расположенный непосредственно
под ним 3
3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley
32
![Page 60: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/60.jpg)
Пример с GreenDao
33
![Page 61: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/61.jpg)
Пример с GreenDao
1. 4 базы данных
33
![Page 62: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/62.jpg)
Пример с GreenDao
1. 4 базы данных
2. 30 таблиц
33
![Page 63: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/63.jpg)
Пример с GreenDao
1. 4 базы данных
2. 30 таблиц
3. 278 классов для доступа к данным
33
![Page 64: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/64.jpg)
Пример с GreenDao
1. 4 базы данных
2. 30 таблиц
3. 278 классов для доступа к данным
4. 20,000 строк кода для доступа к данным
33
![Page 65: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/65.jpg)
Пример с GreenDao
1. 4 базы данных
2. 30 таблиц
3. 278 классов для доступа к данным
4. 20,000 строк кода для доступа к данным
5. 0% фактического покрытия
33
![Page 66: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/66.jpg)
34
![Page 67: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/67.jpg)
Пример из Entity
public class Entity {
private String name; private Long id;
…
public String getName(); …
}
35
![Page 68: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/68.jpg)
Пример - запрос Entity @AutoFactory
public class GetEntityRequest extends SqlRequest {
@Override
protected String[] getColumns() {
return new String[] {
F + “.” + ID_FIELD + “ AS “ + F_ID_FIELD,
F + “.” + NAME_FIELD + “ AS “ + F_NAME_FIELD,
…
STORAGE + “.” + ID_FIELD + “ AS “ + STORAGE_ID_FIELD,
…
SYNC + “.” + ID_FIELD + “ AS “ + SYNC_ID_FIELD,
…
}
}
}
36
![Page 69: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/69.jpg)
Пример - запрос Entity @Override
public Entity createEntity() {
if (!cursor.moveToFirst()) {
return null;
}
…
String name = cursor.getString(cursor.getColumnIndex(F_NAME_FIELD));
…
return new Entity(id, name, …);
}
37
![Page 70: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/70.jpg)
Пример - запрос Entity
@AutoFactory public class GetEntityRequest extends SqlRequest { … }
38
![Page 71: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/71.jpg)
Пример - запрос Entity
@AutoFactory public class GetEntityRequest extends SqlRequest { … }
@Generated public class GetEntityRequestFactory { public GetEntityRequest create() { return new GetEntityRequest(); } }
39
![Page 72: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/72.jpg)
Вызов запроса
public class MyEntityActivity extends Activity {
@Inject GetEntityRequestFactory requestFactory;
@Override
protected void onCreate(Bundle instance) {
super.onCreate(instance);
Entity entity = requestFactory.create().createEntity();
show(entity);
}
}
40
![Page 73: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/73.jpg)
В чем проблема?
41
![Page 74: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/74.jpg)
В чем проблема?
1. Чтение диска на UI
41
![Page 75: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/75.jpg)
В чем проблема?
1. Чтение диска на UI
2. Большое количество кода, чтобы работало
41
![Page 76: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/76.jpg)
В чем проблема?
1. Чтение диска на UI
2. Большое количество кода, чтобы работало
3. Слой представления имеет доступ к данным, затрудняя юнит-тестирование
41
![Page 77: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/77.jpg)
В чем проблема?
1. Чтение диска на UI
2. Большое количество кода, чтобы работало
3. Слой представления имеет доступ к данным, затрудняя юнит-тестирование
4. Вы не знаете свою модель данных
41
![Page 78: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/78.jpg)
42
![Page 79: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/79.jpg)
Выделение отдельного слоя
43
![Page 80: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/80.jpg)
Выделение отдельного слоя
1. Отдельный модуль
43
![Page 81: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/81.jpg)
Выделение отдельного слоя
1. Отдельный модуль
2. Покрытый на 100% тестами
43
![Page 82: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/82.jpg)
А зачем?
44
![Page 83: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/83.jpg)
А зачем?
1. Вы поймете свою модель
44
![Page 84: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/84.jpg)
А зачем?
1. Вы поймете свою модель
2. Обеспечите ее гарантирование функционирование
44
![Page 85: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/85.jpg)
А зачем?
1. Вы поймете свою модель
2. Обеспечите ее гарантирование функционирование
3. Защитите от неверного использования
44
![Page 86: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/86.jpg)
Как осознать модель данных
45
![Page 87: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/87.jpg)
Как осознать модель данных
Stetho 4
4 http://facebook.github.io/stetho/
46
![Page 88: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/88.jpg)
Как осознать модель данных
Stetho 4
Db files
4 http://facebook.github.io/stetho/
47
![Page 89: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/89.jpg)
Как осознать модель данных
Stetho 4
or Android file ExplorerDb filessqldelight 5
5 https://github.com/square/sqldelight
4 http://facebook.github.io/stetho/
48
![Page 90: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/90.jpg)
Stetho
compile 'com.facebook.stetho:stetho:1.5.0'
49
![Page 91: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/91.jpg)
Stetho
public class MyApplication extends Application { … public void onCreate() { super.onCreate(); … Stetho.initializeWithDefaults(this); }}
50
![Page 92: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/92.jpg)
51
![Page 93: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/93.jpg)
52
![Page 94: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/94.jpg)
sqldelight
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.squareup.sqldelight:gradle-plugin:0.6.1' }}
apply plugin: 'com.squareup.sqldelight'
53
![Page 95: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/95.jpg)
sqldelight
CREATE TABLE entity (
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);
54
![Page 96: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/96.jpg)
sqldelight
public class Entity {
private Long id;
private String name;
public Long getId() { … } public String getName() { … });
55
![Page 97: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/97.jpg)
sqldelight@Table(name = “Entity”)public class Entity {
@Column(name = “_id”) private Long _id;
@Column(name = “NAME”) private String name;
public Long getId() { … } public String getName() { … });
56
![Page 98: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/98.jpg)
Интеграция в приложение - CIDR!
57
![Page 99: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/99.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
57
![Page 100: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/100.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
57
![Page 101: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/101.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
3. Deprecate
57
![Page 102: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/102.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
3. Deprecate
4. Replace
57
![Page 103: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/103.jpg)
Интеграция в приложение - CIDR!
58
![Page 104: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/104.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
58
![Page 105: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/105.jpg)
Create unit test
@Override
protected void onCreate(Bundle instance) {
super.onCreate(instance);
Entity entity = requestFactory.create().createEntity();
show(entity);
}
59
![Page 106: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/106.jpg)
Create unit test
@Override
protected void onCreate(Bundle instance) {
super.onCreate(instance);
Entity entity = requestFactory.create().createEntity();
show(entity);
}
60
![Page 107: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/107.jpg)
Create unit test
@Override
protected void onCreate(Bundle instance) {
super.onCreate(instance);
GetEntityRequest request = requestFactory.create();
Entity entity = request.createEntity();
show(entity);
}
61
![Page 108: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/108.jpg)
Create unit test
@VisibleForTesting protected Entity loadEntity() { return requestFactory.create().createEntity(); }
62
![Page 109: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/109.jpg)
Create unit test
@VisibleForTesting
protected Observable<Entity> loadEntity() {
return Single.just(
requestFactory.create().createEntity()
);
}
63
![Page 110: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/110.jpg)
Create unit test
@Override
protected void onCreate(Bundle instance) {
super.onCreate(instance);
loadEntity()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
.subscribe({entity, throwable} -> {
show(entity);
});
}
64
![Page 111: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/111.jpg)
Create unit test
@Override
protected void onCreate(Bundle instance) {
super.onCreate(instance);
viewModel.loadEntity()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
.subscribe({entity, throwable} -> {
show(entity);
});
}
65
![Page 112: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/112.jpg)
Create unit test
@Test public void shouldLoadEntity() { ViewModel viewModel = new ViewModel();
viewModel.loadEntity() .subscribe({entity, throwable} -> { checkEntity(entity); });
}
66
![Page 113: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/113.jpg)
Create unit test
public void checkEntity(Entity entity) { assertEquals(NAME, entity.getName()); assertEquals(ID, entity.getId()); … }
67
![Page 114: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/114.jpg)
Интеграция в приложение - CIDR!
68
![Page 115: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/115.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
68
![Page 116: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/116.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
68
![Page 117: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/117.jpg)
Implement
public interface EntityDAO {
Observable<Entity> loadEntity();
}
69
![Page 118: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/118.jpg)
Implement
public class ViewModel {
@Inject EntityDao entityDao;
public Observable<Entity> loadEntity() {
return entityDao.loadEntity();
}
}
70
![Page 119: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/119.jpg)
Implement
public class GreenDaoEntityDAO implements EntityDAO {
public Observable<Entity> loadEntity() {
RxDao<DbEntity> rxDao = daoSession.getEntityDao().rx();
return rxDao.load();
}
}
71
![Page 120: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/120.jpg)
Проблема №1
72
![Page 121: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/121.jpg)
Проблема №1
1. Обьект из базы - это не то, что удобно использовать в представлении
72
![Page 122: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/122.jpg)
Проблема №1
1. Обьект из базы - это не то, что удобно использовать в представлении
2. Скорее у вас есть Entity и DbEntity.
72
![Page 123: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/123.jpg)
Проблема №1
1. Обьект из базы - это не то, что удобно использовать в представлении
2. Скорее у вас есть Entity и DbEntity.
3. Что же делать?
72
![Page 124: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/124.jpg)
Конвертеры!
73
![Page 125: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/125.jpg)
Конвертеры public class GreenDaoEntityDAO implements EntityDAO {
public Observable<Entity> loadEntity() {
RxDao<DbEntity> rxDao = daoSession.getEntityDao().rx();
return rxDao.load().flatMap(dbEntity -> convert(dbEntity));
}
}
74
![Page 126: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/126.jpg)
Конвертеры public class GreenDaoEntityDAO implements EntityDAO {
public Observable<Entity> loadEntity() {
RxDao<DbEntity> rxDao = daoSession.getEntityDao().rx();
return rxDao.load().flatMap(dbEntity -> convert(dbEntity));
}
}
75
![Page 127: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/127.jpg)
Проблема №2
76
![Page 128: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/128.jpg)
Проблема №2
1. Младшим разработчикам наплевать на эту вашу архитектуру
76
![Page 129: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/129.jpg)
Данные из модуля приложения… public class GreenDaoEntityDAO implements EntityDAO {
public Observable<Entity> loadEntity() {
String userId = ApplicationSettings.getUserId();
RxDao<DbEntity> rxDao = daoSession.getEntityDao().rx();
return rxDao.load(userId).flatMap(dbEntity -> convert(dbEntity));
}
}
77
![Page 130: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/130.jpg)
Понадобилось кому почитать данные из модуля приложения…
78
![Page 131: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/131.jpg)
Понадобилось кому почитать данные из модуля приложения…
• Переносим слой в отдельный модуль
78
![Page 132: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/132.jpg)
Понадобилось кому почитать данные из модуля приложения…
• Переносим слой в отдельный модуль
• Покрываем его тестами
78
![Page 133: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/133.jpg)
Понадобилось кому почитать данные из модуля приложения…
• Переносим слой в отдельный модуль
• Покрываем его тестами
• Поставляем бинарно
78
![Page 134: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/134.jpg)
Интеграция в приложение - CIDR!
79
![Page 135: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/135.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
79
![Page 136: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/136.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
79
![Page 137: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/137.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
3. Deprecate
79
![Page 138: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/138.jpg)
Deprecate
/** * @deprecated Please, use {@link EntityDao#loadEntity()} */@Deprecated@AutoFactorypublic class GetEntityRequest {...}
80
![Page 139: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/139.jpg)
Интеграция в приложение - CIDR!
81
![Page 140: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/140.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
81
![Page 141: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/141.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
81
![Page 142: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/142.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
3. Deprecate
81
![Page 143: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/143.jpg)
Интеграция в приложение - CIDR!
1. Create unit test
2. Implement
3. Deprecate
4. Replace
81
![Page 144: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/144.jpg)
Финальная статистика
82
![Page 145: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/145.jpg)
Финальная статистика
1. 4 базы данных
82
![Page 146: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/146.jpg)
Финальная статистика
1. 4 базы данных
2. 30 таблиц
82
![Page 147: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/147.jpg)
Финальная статистика
1. 4 базы данных
2. 30 таблиц
3. 84 класса для доступа к данным (было 278)
82
![Page 148: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/148.jpg)
Финальная статистика
1. 4 базы данных
2. 30 таблиц
3. 84 класса для доступа к данным (было 278)
4. 7400 строк кода вместе с тестами (было 20,000 без тестов)
82
![Page 149: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/149.jpg)
Финальная статистика
1. 4 базы данных
2. 30 таблиц
3. 84 класса для доступа к данным (было 278)
4. 7400 строк кода вместе с тестами (было 20,000 без тестов)
5. 100% фактического покрытия (было 0%)
82
![Page 150: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/150.jpg)
83
![Page 151: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/151.jpg)
Какие целевые свойства достигнуты?
84
![Page 152: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/152.jpg)
Какие целевые свойства достигнуты?
• Быть производительным ✅
84
![Page 153: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/153.jpg)
Какие целевые свойства достигнуты?
• Быть производительным ✅
• Быть локализуемым
84
![Page 154: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/154.jpg)
Какие целевые свойства достигнуты?
• Быть производительным ✅
• Быть локализуемым
• Работать оффлайн ✅
84
![Page 155: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/155.jpg)
Какие целевые свойства достигнуты?
• Быть производительным ✅
• Быть локализуемым
• Работать оффлайн ✅
• Быть тестируемым ✅
84
![Page 156: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/156.jpg)
Какие целевые свойства достигнуты?
• Быть производительным ✅
• Быть локализуемым
• Работать оффлайн ✅
• Быть тестируемым ✅
• Быть расширяемым ✅
84
![Page 157: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/157.jpg)
Где еще можно использовать такой подход?
85
![Page 158: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/158.jpg)
Где еще можно использовать такой подход?
• Переделывая взаимодействие с сетью
85
![Page 159: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/159.jpg)
Где еще можно использовать такой подход?
• Переделывая взаимодействие с сетью
• Переходя на MVVM
85
![Page 160: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/160.jpg)
Где еще можно использовать такой подход?
• Переделывая взаимодействие с сетью
• Переходя на MVVM
• Вообще, вводя любой новый слой
85
![Page 161: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/161.jpg)
Где этот подход не помогает?
86
![Page 162: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/162.jpg)
Где этот подход не помогает?
• С секьюрити
86
![Page 163: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/163.jpg)
Где этот подход не помогает?
• С секьюрити
• С тулами
86
![Page 164: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/164.jpg)
Где этот подход не помогает?
• С секьюрити
• С тулами
• С любым межкомпонентным code
86
![Page 165: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/165.jpg)
О докладчике
87
![Page 166: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/166.jpg)
О докладчике
• Владимир Иванов - ведуший разработчик в EPAM
87
![Page 167: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/167.jpg)
О докладчике
• Владимир Иванов - ведуший разработчик в EPAM
• Больше 6 лет разработки под Android
87
![Page 168: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/168.jpg)
О докладчике
• Владимир Иванов - ведуший разработчик в EPAM
• Больше 6 лет разработки под Android
• Больше 15 опубликованных приложений
87
![Page 169: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/169.jpg)
О докладчике
• Владимир Иванов - ведуший разработчик в EPAM
• Больше 6 лет разработки под Android
• Больше 15 опубликованных приложений
• Широкий кругозор в мобильных технологиях
87
![Page 170: Что такое legacy? - · PDF file3 Software Architecture in Practice, 3rd Edition, Bass, Clements, Kazman, Addison-Wesley 32. Пример с GreenDao 33. Пример с GreenDao](https://reader033.vdocuments.pub/reader033/viewer/2022042600/5aa7008e7f8b9a6d5a8bb946/html5/thumbnails/170.jpg)
QA
88