Arquitetura para iniciantes — Parte 1

Aline Souza
3 min readJun 15, 2021

--

Qualquer desenvolvedor com um pouco mais de experiência pode ter tido a oportunidade de atuar em um projeto grande, em que a dificuldade de realizar uma tarefa era multiplicado pela complexidade da arquitetura.

Ou pior: Muitas vezes, pela inexistência de uma arquitetura definida. E com isso, acabou aprendendo "na raça" os benefícios de ter uma arquitetura definida e, mais do que isso, bem estruturada.

Mas para um desenvolvedor em início de carreira, que pouco conhece sobre projetos do "mundo real", é muito difícil identificar o que seria essa tal arquitetura e que diferença, de fato, faz no dia-a-dia do desenvolvedor.

Photo by Nicole Wolf on Unsplash

as afinal, o que é essa tal arquitetura que tanto falamos? Vamos usar a analogia de uma casa: Muitas pessoas constroem casas, mas nem todos estudaram para tal (como engenheiros e arquitetos). Portanto, não calculam a estrutura necessária para tal. E aí, podem acontecer dois cenários:

  • A construção pode ser "super faturada", ou seja: com medo de cair, acabam utilizando materiais mais resistentes que o necessário (seja no tipo de ferragens, tijolos, quantidade de colunas, etc.), o que obviamente, encarece o projeto como um todo. Aquela casa nunca será utilizada em toda sua potência arquitetural, o que será um desperdício (de tempo e recursos);
  • A construção pode ser subestimada: No intuito de economizar (ou por puro desconhecimento mesmo), a arquitetura da casa pode ficar frágil (com risco de desabamento, por exemplo), ou no exato limite, o que impede um crescimento. Por exemplo, digamos que esta casa precise agora se tornar um sobrado, precisando assim, construir mais 3 quartos no piso superior. Se a base da casa não for bem consolidada, essa construção torna-se inviável a menos que faça uma reforma para aumentar, por exemplo, a quantidade de vigas e colunas para suportar os próximos cômodos. Ou seja, será um gasto ainda maior em: Reformar o que já estava pronto e fazer o que era de fato necessário (os 3 quartos).

Perceberam que em ambos os casos houveram perdas consideráveis decorrente de um mau planejamento arquitetural? Em um projeto de Software, o pensamento é exatamente o mesmo: Você pode criar algo mais simples e compacto, o que certamente lhe dará dor de cabeça conforme o projeto for crescendo ou pode criar uma super arquitetura que nunca será utilizada.

Tudo é questão de uma reflexão e planejamento dos próximos passos. A arquitetura do software é a base do seu projeto e vai desde a escolha da linguagem da programação que será utilizada até ao padrão que será utilizado. Por exemplo, no lado mobile, está em alta o padrão MVVM.

Um software com arquitetura bem estruturada pode nos trazer diversos benefícios como a escalabilidade (lembra-se dos 3 cômodos mencionados anteriormente? Pois é…), aumento de desempenho e também a personalização. Por exemplo, é totalmente possível misturar MVVM com MVI se isso for o melhor para o seu projeto. E é nesse ponto que torna-se uma arquitetura personalizada (e ainda assim, bem definida).

Mas a verdade é que pensar (e construir) uma arquitetura pode dar trabalho. E a depender da complexidade do projeto, tentar estruturar tudo antes pode dificultar que o mesmo saia do papel. Por esse motivo, é muito comum vermos tantas startups que começaram com uma arquitetura um tanto quanto duvidosa (ou até mesmo, sem arquitetura definida) e conforme a empresa foi crescendo, elas começaram, enfim, a investir na refatoração do código e adoção de boas práticas arquiteturais.

Agora que já temos uma resposta do que é uma arquitetura de software, vamos começar a nos aprofundar no "feijão com arroz arquitetural" que é o padrão MVVM + Clean Architecture. Essa combinação é extremamente poderosa para construir até mesmo aplicativos mais robustos.

Quer entender melhor o que é MVVM? Leia este artigo onde apresentei um pouco sobre e pontuei as diferenças comparado ao MVP.

Lembrando que, para acompanhar melhor os próximos artigos, é recomendável clonar o repositório BaseDroid, que será utilizado como nossa base de estudos.

Nos próximos artigos abordaremos o que é esse tal Clean Architecture que tanto falo, cada uma das camadas criadas no projeto acima, por qual utilizá-las e muito mais. :)

Dúvidas e/ou sugestões? Me chama no LinkedIn.

Até a próxima!

Code Like a Girl 👧

--

--

Aline Souza

Desenvolvedora Android, apaixonada por tecnologia, e aprendendo todo dia um pouco mais! Code like a girl :)