Skip to content

vladislavternovskiy/TestApp-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TestApp-iOS

Даный пример кода реализует CLEAN архитектуру(как минимум частично, ибо код копипастился за пару часов на коленке, и час ушел на удаление корпоративных решений).

Первое что хотелось бы отметить - это решение проблемы большого и не гибкого AppDelegate. Для этого был создан класс AppServiceComposite(инстанс AppDelegate) в котором регистрируются инстансы типа AppService(appDelegate). В AppServiceComposite имплементируются все нужные методы AppDelegate и в этих методах комбайнятся зареганные сервисы, и для каждого сервиса выполняется унжный метод делегата. AppServiceComposite регистрируется в AppServiceAssembly и резолвается в init() методе AppDelegate при помощи MainAssembler. Таким образом при добавлении новых требований мы можем создавать новые сервисы и регать их AppServiceAssembly и вызывать их методы в appDelegate.

Все зависимости вынесены в DI часть, для каждой логической сущности используется свой Assembly и регистрируется в DI-ке. Связи между объектами завязаны на интерфейсах, а не на реализации. Это позволяет коду быть более гибким и поддержуемым.

Для байндингов используется RxSwift в тандеме ViewModel. Во ViewModel выделено два основных интерфейса: Input & Output, что позволяет инкапсулировать ненужную имплементацию и сделать взаимосвязь View и VeiwModel более понятной. (Сделано максимально криво, и я это понимаю, но времени выделил мало, потому "маємо шо маємо" :D )

Вьюконтроллеры регистрируются в DI, и резолваются при переходах по сегвеях, что упрощает навигацию в приложении (тут бы Router прикрутить)

В приложении есть пример тестов(масло масляное) с моками.

Используется SwiftLint с большим колличеством правил которые позволяют комманде девелоперов писать более читаемый код, придерживаясь общепринятых норм

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors