1 Модуль А - Спринт-4
root edited this page 2026-03-31 22:09:33 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Вам предстоит разработать сетевой слой в отдельной библиотеке в отдельном проекте. 
Сетевой слой должен быть реализован как независимый модуль со следующими характеристиками:
Характеристика	Описание
Изолированность	Библиотека существует как самостоятельный проект с собственной системой контроля версий
Абстрагированность	Основное приложение работает через интерфейсы, а не через конкретную реализацию
Заменяемость	Библиотека может быть заменена на другую без изменения кода основного приложения
Независимое версионирование	Собственный жизненный цикл и версии (semver)

Необходимо соблюдать SOLID и DRY.
SOLID в контексте сетевого слоя
Принцип	Применение в Network Layer
S (Single Responsibility)	Каждый класс отвечает за одну функцию: HttpClient — только за HTTP запросы, ResponseParser — за парсинг ответов, ErrorHandler — за обработку ошибок
O (Open/Closed)	Интерфейсы открыты для расширения (новые методы), но закрыты для модификации. Можно добавить новый тип запроса через наследование
L (Liskov Substitution)	Любая реализация HttpClient (DioClient, FetchClient) должна работать одинаково с точки зрения вызывающего кода
I (Interface Segregation)	Интерфейсы разделены по функциональности: HttpClientдля основных запросов, AuthHttpClient для авторизации, FileHttpClient для загрузки файлов
D (Dependency Inversion)	Код приложения зависит от абстракции HttpClient, а не от конкретной реализации (Dio, Axios, URLSession)


DRY (Don't Repeat Yourself)
Принцип DRY	Применение
Единый источник истины	Базовый URL, заголовки авторизации, таймауты определяются в одном месте конфигурации
Единая обработка ошибок	Все ошибки проходят через централизованный механизм обработки, а не дублируются в каждом запросе
Единый формат ответов	Все ответы сервера приводятся к единому виду через общий парсер
Переиспользование логики запросов	Базовые методы HTTP (GET, POST, PUT, DELETE) инкапсулированы в одном месте
Фабрики запросов	Создание типовых запросов через параметры, а не копирование кода для каждого эндпоинта
Общие утилиты	Хелперы для работы с заголовками, кодами ответов, форматами данных, интерсепторы

Все вызовы методов сетевого слоя будут вызываться через уровень абстракции, так как библиотека сетевого слоя может быть заменена на другую.