Recentemente, me deparei com um artigo fascinante sobre a transformação da arquitetura de software da Tripadvisor, que me fez refletir sobre como a escolha de uma boa estrutura pode impactar diretamente a experiência do usuário e a produtividade da equipe. A mudança deles para a Composable Architecture (TCA) é um exemplo claro de como evoluir em um ambiente em constante mudança.
Introdução
A jornada da Tripadvisor começou com a necessidade de simplificar sua aplicação iOS, que estava se tornando cada vez mais complexa. O engenheiro principal da equipe, Ben Sarrazin, compartilhou como a antiga estrutura MVVM-C (Model-View-ViewModel-Coordinator) se tornou um verdadeiro labirinto de coordenadores e modelos de visualização. A falta de uma estrutura de navegação clara se tornou um dos maiores desafios, dificultando a manutenção e a compreensão do código.
Desafios da Arquitetura MVVM-C
Um dos pontos críticos mencionados por Sarrazin foi a navegação, que se tornou um emaranhado de possibilidades. Isso complicou até mesmo as ações mais simples, como o login de um usuário anônimo. Imagine ter que percorrer um labirinto só para autenticar alguém! Além disso, a dependência de UIViewControllers trouxe mais complexsidade, especialmente ao integrar com SwiftUI usando Combine.
Debuggar cadeias de eventos baseadas em Combine é um verdadeiro pesadelo, principalmente quando se lida com múltiplos coordenadores. Um código que deveria ser simples se torna uma fonte de frustração. Com a TCA, a Tripadvisor buscou não apenas simplificar, mas também aprimorar a experiência de desenvolvimento e teste.
Por que Adotar a Composable Architecture?
A TCA se apresentou como uma solução promissora, oferecendo integração fluida com SwiftUI, testes robustos e uma estrutura mais composicional. A equipe da Tripadvisor ficou impressionada com a evolução e a maturidade do TCA, além da documentação de alta qualidade que o acompanha.
Estratégia de Migração
A migração não foi um processo simples. A equipe adotou uma abordagem de baixo para cima, substituindo os modelos de visualização sem filhos por stores do TCA e, gradualmente, abordando os modelos de visualização pai. A parte mais interessante foi a reestruturação dos coordenadores. Em vez de uma troca um-a-um, os coordenadores pais assumiram as responsabilidades de navegação de seus filhos, criando uma fonte única de verdade para a navegação.
Dicas Avançadas para Implementação
Se você está pensando em migrar ou implementar a TCA, aqui estão algumas dicas que podem ajudar:
- Centralize comportamentos: Evite a comunicação bidirecional excessiva entre componentes. Centralize comportamentos compartilhados em componentes pai sempre que possível.
- Debounce ações: Para evitar a sobrecarga de ações sendo despachadas rapidamente, especialmente em listas, implemente debounce em entradas de alta frequência.
- Testes como feedback: Utilize a TestStore da TCA para garantir que seu código está se comportando como esperado. Testes que se tornam difíceis de entender geralmete sinalizam que o código pode ser melhorado.
Conclusão
A migração da Tripadvisor para a Composable Architecture ilustra que, muitas vezes, a solução para a complexidade não está em adicionar mais camadas, mas em simplificar e centralizar. É uma lembrança de que uma boa arquitetura deve facilitar, e não complicar, o desenvolvimento. Para nós, desenvolvedores, isso é um convite à reflexão: estamos realmente utilizando as melhores práticas para nossas aplicações? E, principalmente, estamos prontos para mudar quando necessário?
Se você ainda não explorou a TCA, vale a pena dar uma olhada. A transformação que ela pode trazer para o seu fluxo de trabalho e para a qualidade do seu código pode ser surpreendente.