Repositórios Java - Lista os repositórios Java presentes no GitHub, a partir do mais popular.
Versão: 0.0.1
Linguagem: Swift
Aplicativo consulta a API do GitHub para listar os repositórios Java mais popular.
De forma bem resumida, está arquitetura foi pensada para criar um aplicativo inspirado no Clean Archicture.
Contendo um Core, onde o conjunto de regras da aplicação fica disponível. Se eventualmente, precisar implementar
outra aplicação em Swift, o Core já estará pronto.
Dentro da aplicação encontramos o Boundary, a Infrastructure e o Presentation.
A Infrastructure é responsável por cuidar da camada externa da aplicação, como banco de
dados, serviços etc.
O Boundary é responsável por interligar as camadas externa com o Core.
O Presentation cuida da apresentação das telas, da interação e de como os elementos visuais são montados.
Os links para mais informações está presente nas referências.
Segue a lista de libs usadas na atual versão do app:
- Kingfisher: Biblioteca poderosa para baixar e armazenar em cache imagens da web. Muitos desenvolvedor contribuem com a melhoria e continuidade desta bibliote. Em relação a outra biblioteca popular o
SDWebImage
, oKingfisher
lida melhor com os avisos de memória. OKingfisher
foi criado emSwift
; - UIScrollView-InfiniteScroll: Biblioteca simples para controlar o scroll inifinto.
Algumas melhorias para fazer na próxima versão do app:
- Ampliar os testes unitários e de UI;
- Trocar a dependência que cuida do infinte scroll ou criar algo similar e remover a dependência.
Algumas observações referentes a está versão do app:
- Há um force cast presente na classe
PullRequestSummaryDestination
apenas para forçar a existência da classe destino. Caso a classe destino, por algum motivo, não seja a esperada, a aplicação irá "quebrar", sinalizando ao desenvolvedor que há erros referentes a transição entre views. A ideia é informa ao desenvolvedor que há um erro e facilite a investigação. Algumas pessoas preferem não fazer esse force cast, no caso, está bem simples alterar e remover o force cast.
API GitHub
https://developer.github.com
Lib Kingfisher
https://github.com/onevcat/Kingfisher
Lib UIScrollView-InfiniteScroll
https://github.com/pronebird/UIScrollView-InfiniteScroll
herbertograca - DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together
https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
Robert C Martin - Clean Archicture and Design
https://www.youtube.com/watch?v=Nsjsiz2A9mg
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html