-
Tela Inicial sem Scroll
Descrição: A tela inicial não permite rolagem, impossibilitando a visualização de todo o conteúdo em dispositivos menores.
Solução: AdicionarverticalScroll(rememberScrollState())
naColumn
que estrutura a tela. -
Erro de Nome de Função no
CouponRepositoryTest
Descrição: O arquivoCouponRepositoryTest
utiliza a funçãoloadCupons()
, enquanto a função correta no código élodCupons()
.
Solução: Ajustar o nome da funçãolodCupons
paraloadCupons
no arquivoCouponRepository
e em todos os locais onde essa função é utilizada. Outra opção é utilizar a ferramenta de refatoração do Android Studio para realizar essa mudança de forma automática e segura.
-
Utilização de
LazyColumn
para Listagens
Em vez de utilizar umaColumn
para listar os cupons, é recomendável usarLazyColumn
, já que ela carrega apenas os itens visíveis na tela, melhorando o desempenho com grandes volumes de dados. -
Separar Função
CouponList
em um Arquivo Próprio
Mover a funçãoCouponList
para um arquivo separado aumenta a modularização e melhora a legibilidade do código. -
Implementação de um
ViewModel
Criar umViewModel
para gerenciar o estado da tela, a origem dos dados e as interações do usuário, separando a lógica de negócios da interface de usuário. -
Criar Componente
CouponItem
em Arquivo Separado
Criar um arquivo dedicado para o componenteCouponItem
, o que melhora a organização e reutilização desse item em diferentes partes do app. -
Organizar Arquivos em Pacotes (Camadas)
Reorganizar os arquivos em pacotes (ou camadas) conforme as responsabilidades (e.g.,model
,view
,repository
, etc.), seguindo boas práticas de arquitetura e facilitando a manutenção e expansão do código. -
Utilizar
Room
ePaging3
Implementar o Room para gerenciar os dados localmente e usar Paging3 para a paginação dos itens. Isso garante que os dados sejam carregados sob demanda, melhorando o desempenho e a experiência do usuário em listagens grandes.
Imagine um cenário em que os cupons são retornados de uma API. Abaixo estão minhas considerações:
- MVVM (Model-View-ViewModel): Separaria as responsabilidades entre a Model, View e ViewModel, o que facilita o gerenciamento de estado, lógica de negócios e interação com a UI.
- Clean Architecture com MVVM: Mesmo para projetos pequenos, essa abordagem oferece modularidade, facilidade de manutenção, testes e flexibilidade para crescer. Principais vantagens:
- Modularização do projeto.
- Facilidade na implementação de testes e na manutenção do código.
- Flexibilidade para mudanças e melhorias no futuro.
- Sim. Criaria um ViewModel para gerenciar o estado da tela e o fluxo de dados vindos da API. Isso garante que a interface seja reativa e responda adequadamente às mudanças no backend.
- Retrofit ou Ktor para comunicação com APIs externas.
- Hilt ou Koin para injeção de dependências, facilitando o gerenciamento de objetos e a testabilidade.
- Room para armazenamento local e Paging3 para paginação eficiente dos dados da API.