Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Reutilização de código (aproveitando códigos para outros projetos)

Bom dia galera. No dia a dia de vocês, programadores, como vocês realizam a reutilização de código ? Quais técnicas vocês usam ou ferramentas para melhorar a produtividade neste sentido?

Vejo que neste curso há vários trechos de códigos (arquivos também) que poderiam facilmente ser copiados e colados (com pequenos ajustes, é claro) em outros projetos totalmente diferentes, como por exemplo os arquivos do pacote de configuração (AppWebConfiguration, JPAConfiguration, ServletSpringMVC).

Entendo a necessidade do facilitador deste curso em codificar na mão cada um desses citados arquivos, até mesmo pela importância de entendê-los e saber como eles funcionam. Mas no mundo real isso não é simplesmente feito na mão, certo? Ou vocês fazem tudo de zero mesmo?

Desde já. Obrigado pessoal!

3 respostas
solução!

Fala Thiago, tudo bem ?

Sobre essa questão de reutilização de código e a adoção de estratégias pra chegar nesse objetivo depende muito do caso.

Vou passar uma experiência pessoal dentro dos projetos que participei pra tentar exemplificar.

Pegando um exemplo simples e de conhecimento geral como boa prática: Códigos de negócio (ou utilitários ao negócio) que devem ser reutilizados por diversas aplicações/serviços em geral acabam sendo refatorados pra algo mais genérico e são reaproveitados como libs que nos demais projetos.

Quando falamos sobre os códigos de configuração poderíamos seguir o mesmo princípio (refatorar pra algo genérico e distribuir como lib), mas não é tão simples, pois em geral muitos detalhes são particulares e podem mudar totalmente de um projeto para o outro (embora o código e classes de configuração programática sejam repetitivos quando aparecem).

Algumas iniciativas surgiram justamente pra facilitar a vida nesse sentido. Imagine que a gente tentasse seguir aquele princípio de escrever o código genérico... Poderíamos isolar os códigos de configuração em classes nossas reaproveitáveis, que ao invés de "chumbar" os valores usados pela configuração particular de um projeto, buscassem esses valores em outras fontes (argumentos passado via linha de comando ao subir o server, arquivos chave-valor na estrutura de projeto). Dessa forma poderíamos reutilizar essa lib em outro projeto, bastando passar os valores que mudam. Pois é, foi justamente essa a motivação de um dos projetos de maior sucesso do Spring. O framework Spring Boot é o cara que vai te ajudar a esquecer (senão todos, a grande maioria) os códigos de configuração.

A ideia desse projeto é justamente trazer essa implementação pronta pra nós, prover todas as classes de configuração (que eles nomeiam no estilo DataSourceAutoConfiguration, CacheAutoConfiguration, XPTOAutoConfiguration), e adivinha... o código delas já vai buscar chaves específicas (descritas na documentação) em um arquivo que deve constar com o nome de application.properties, em src/main/resources (na maioria dos casos), em um projeto baseado no SpringBoot. Dê uma olhada nesse projeto. Hoje é fundamental que o dev que esteja aprendendo/utilizando a stack do Spring saiba usar o Boot.

Ah! em casos onde você não queira adotar o Spring Boot no seu projeto (o que tem se tornado cada vez mais difícil dada a facilidade que ele provê) e queira continuar um projeto Spring tradicional, você pode usar as apps (de outra natureza) que geram o código base de configuração (como um boilerplate todo pronto pra iniciar o projeto) e você só altera os valores. Um que já usei muito é o SetupMyProject. Ele é como um wizzard onde você vai preenchendo o que precisa no projeto (Spring, JPA com Hibernate, Java 8, etc, etc) e no final ele gera o código base do projeto te devolvendo um zip que você importa na IDE e sai desenvolvendo.

Espero ter ajudado. Abraço!

E aí Rafael Rollo, tranquilo?

Obrigado pela resposta.

Neste curso vi tantas coisas para serem configuradas e codificadas ''no braço'' e isso me causou desespero, pois eu já desenvolvi algumas aplicações em PHP, usando frameworks, e já vem quase tudo ''pronto'', podendo, assim, dedicar exclusivamente para o problema central do desenvolvimento do software.

Vou seguir sua dica e ou procurar saber mais sobre o Sprint Boot.Você acha uma boa fazer esse curso de Spring Boot do alura? ou é muito avançado? o nível dele é considerado intermediário.

Obrigado mais uma vez.

Opa Thiago!

Indico fazer o curso na sequência dos treinamentos de Spring Framework (MVC). É tranquilo o curso, mas você certamente vai tirar mais proveito (e já ter ideia do que ocorre por baixo dos panos do Boot) fazendo primeiro o projeto Spring tradicional.

Abraço e bons estudos!