Тема: РАЗРАБОТКА ВТОРОЙ ВЕРСИИ ANDROID-БИБЛИОТЕКИ ДЛЯ РЕАЛИЗАЦИИ ТИПОВЫХ ЭКРАНОВ
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Перечень условных обозначений, символов, сокращений, терминов 5
Введение 6
1 Анализ и формулирование требований 8
1.1 Анализ первой версии библиотеки 8
1.1.1 Использование библиотеки 9
1.1.2 Ограничения первой версии 11
1.2 Формулирование требований ко второй версии библиотеки 11
1.2.1 Расширяемость функциональностей экрана при использовании
библиотеки 12
1.2.2 Расширяемость UI-шаблонов библиотеки 12
1.2.3 Использование функциональностей библиотеки без UI-шаблона 12
1.2.4 Требования ко второй версии библиотеки 13
2 Проектирование второй версии библиотеки 14
2.1 Инструменты разработки 14
2.2 Архитектурный подход в проекте 14
2.3 Зона ответственности первой версии библиотеки 17
2.4 Структура второй версии библиотеки 18
2.5 Core-модуль 20
2.5.1 Контейнер состояний 22
2.5.2 Обработка событий 23
2.5.3 Отслеживание событий аналитики 24
2.6 Слой плагинов 26
2.6.1 Плагин PressBackPlugin 27
2.6.2 Плагин PullToRefreshPlugin 28
2.6.3 Плагин LoadDataPlugin 30
2.6.4 Комбинирование плагинов 34
2.7 Возможность подключения плагинов к экрану 34
2.8 Построение Store 36
2.9 UI-шаблон фрагмента со списком 41
2.9.1 Интерфейс FCListFragmentDependencies 42
2.9.2 Собирающий FCUiStateContainerMapper 43
2.9.3 Принцип работы FCListFragmentStore 44
2.9.4 Собирающий FCListFragmentUiStateContainerRenderer 45
2.9.5 Собирающий FCListFragmentUiEventProvider 45
2.9.6 Собирающий FCListFragmentNewsHandler 46
2.9.7 Элементы пользовательского интерфейса и TiRecycler 47
2.9.8 Разделение сущностей шаблона по модулям 47
2.9.9 Расширяемость шаблона 48
3 Реализация библиотеки 49
3.1 Используемые технологии 49
3.2 Типизированный обработчик событий 49
3.3 Реализация плагина LoadDataPlugin 51
3.3.1 Способы загрузки данных 51
3.3.2 Загрузка данных одним запросом 51
3.3.3 Постраничная загрузка данных 53
3.3.4 Структурирование зависимостей плагина 56
3.3.5 Подключение плагина к FCStore 57
3.4 Особенности реализации UI-шаблона 58
3.4.1 Совместное использование плагинов LoadDataPlugin и PullToRefreshPlugin 58
3.4.2 Абстрактный класс FCTemplateListFragment 60
3.4.3 Возможность переопределять логику в сущностях шаблона 60
3.5 Тестирование библиотеки 61
3.5.1 Тестирование Core-модуля 61
3.5.2 Тестирование плагина LoadDataPlugin 62
3.5.3 Тестирование UI-шаблона со списком 63
3.6 Написание документации 64
4 Сравнение объема кода для реализации экрана с библиотекой и без нее 66
4.1 Реализация экрана-примера с использованием второй версии библиотеки ....66
4.2 Сравнение объема кода для реализации экрана 67
4.3 Сравнение объема кода при добавлении новых возможностей на экран 68
Заключение 71
Список использованных источников и литературы 72
📖 Введение
Схожее поведение на нескольких экранах ведет к тому, что мобильные разработчики пишут много повторяющегося кода по логике работы экрана для каждого экрана. Из этого вытекают многие факторы, например: написание дублируемого кода занимает время, есть возможность ошибиться в написании похожего кода, а также помимо дублируемого кода реализации какой-то логики, дублируются еще и тесты для каждого экрана, которые проверяют одинаковую логику.
В больших компаниях с настроенными процессами разработки написание дублируемого кода и повторяющие друг друга тесты являются еще большей проблемой, так как при добавлении каждого нового куска кода в общую кодовую базу выполняется довольно долгая проверка, что новый код не сломает приложение. Проверка долгая из-за того, что во время нее выполняются все тесты приложения, а наличие повторных тестов увеличивает время выполнения проверки, из-за чего каждый новый кусок кода будет все дольше добавляться в общую кодовую базу. А наличие дублируемого кода логики работы приводит к тому, что больше кусков кода нужно добавлять в общую кодовую базу, из-за чего разработка всего экрана и его появление в кодовой базе будет занимать много времени.
Для решения вышеперечисленных проблем было принято решение разработать внутри проекта первую версию Android-библиотеки для реализации типовых экранов. Она хорошо себя показала, и из-за этого она дорабатывалась и использовалась во все большем количестве экранов. Но в какой-то момент времени ограничения библиотеки не позволили развивать ее дальше, а отсутствие расширяемости со стороны пользователя библиотеки и вовсе сделало библиотеку подходящей только для узкого набора экранов.
Проблема библиотеки заключается в том, что изначально она не разрабатывалась для всех тех целей, для которых ее хочется использовать сейчас. Из-за этого в какой-то момент времени изначальный концепт реализации библиотеки помешал развивать ее дальше и остановил ее прогресс. Но несмотря на это библиотека была настолько удобная, что не хотелось отказываться от ее использования из-за наличия одной кнопки, которую библиотека не подразумевает. Было принято решение - написать «с нуля» вторую версию библиотеки, учитывая опыт разработки первой версии библиотеки и сделанные выводы.
Таким образом, цель работы - разработать вторую версию Android-библиотеки для реализации типовых экранов.
Можно выделить следующие задачи:
1) Проанализировать первую версию библиотеки,
2) Сформулировать требования ко второй версии библиотеки,
3) Спроектировать вторую версию библиотеки,
4) Реализовать вторую версию библиотеки,
5) Провести сравнение объема кода, необходимого для реализации экрана, с использованием библиотеки и без нее.
✅ Заключение
Для разработанной библиотеки были написаны Unit-тесты, чтобы обеспечить ожидаемую логику работы реализованных функциональностей. Также была написана документация с подробным описанием всех основных сущностей библиотеки, написанных плагинов и шаблона.
В целях демонстрации набора классов для реализации экрана с использованием второй версии библиотеки и для сравнения объема кода, необходимого для реализации экрана, без использования библиотеки и с использованием первой и второй версий, был реализован типовой экран со списком статей всеми тремя способами, после чего было проведено сравнение.
Реализованная библиотека готова к применению, в будущем планируется добавлять в нее новые плагины и шаблоны. На данный момент несколько экранов реализовано с применением плагинов библиотеки, а в дальнейшем планируется провести миграцию всех экранов, написанных с использованием первой версии библиотеки, на шаблоны из второй версии библиотеки. Также, скорее всего, планируется опубликовать библиотеку в открытый доступ.
В ходе работы над библиотекой был получен уникальный опыт анализа и формулирования требований, проектирования и реализации библиотеки, которая должна не только уменьшать объем кода, необходимого для реализации экрана, но и быть расширяемой, чтобы увеличить число случаев, когда библиотеку можно использовать. Также был получен опыт написания тестов и документации для библиотеки.





