tdc2017|sp - trilha java e possivel ser mais produtivo em java aplicando os conceitos de reflection...
TRANSCRIPT
![Page 1: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/1.jpg)
Globalcode – Open4education
Trilha – JavaPaulo Soares
Software Architect at McKinsey Digital Labs
![Page 2: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/2.jpg)
Globalcode – Open4education
Convention Over Configuration
RoteiroMotivação
Exemplo prático
Resultados
Conclusão
Considerações finais
![Page 3: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/3.jpg)
Globalcode – Open4education
Motivação
Produtividade
![Page 4: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/4.jpg)
Globalcode – Open4education
Motivação
Produtividade Dev Time = # Decisions * Mean Implementation Time
![Page 5: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/5.jpg)
Globalcode – Open4education
Motivação
Produtividade Dev Time = # Decisions * Mean Implementation Time
Menos decisões
![Page 6: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/6.jpg)
Globalcode – Open4education
Motivação
Produtividade Dev Time = # Decisions * Mean Implementation Time
Menos decisões
![Page 7: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/7.jpg)
Globalcode – Open4education
Motivação
Produtividade Dev Time = # Decisions * Mean Implementation Time
Menos decisões
Mais experiência
![Page 8: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/8.jpg)
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform Load)
![Page 9: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/9.jpg)
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform Load)
EntradaPlanilha CSV com dados de clientes
![Page 10: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/10.jpg)
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform Load)
EntradaPlanilha CSV com dados de clientes
Resultado esperadoDados dos clientes devem ser salvos em uma base de dados
![Page 11: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/11.jpg)
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform Load)
EntradaPlanilha CSV com dados de clientes
Resultado esperadoDados dos clientes devem ser salvos em uma base de dados
ContextoFormato do CSV e db schema são negociáveis.
![Page 12: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/12.jpg)
Globalcode – Open4education
Exemplo prático – v1
![Page 13: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/13.jpg)
Globalcode – Open4education
Exemplo prático – v1
![Page 14: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/14.jpg)
Globalcode – Open4education
Exemplo prático – v1
![Page 15: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/15.jpg)
Globalcode – Open4education
Exemplo prático – v1
![Page 16: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/16.jpg)
Globalcode – Open4education
Exemplo prático – v1
![Page 17: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/17.jpg)
Globalcode – Open4education
Exemplo prático – v1
![Page 18: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/18.jpg)
Globalcode – Open4education
Exemplo prático – v2
![Page 19: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/19.jpg)
Globalcode – Open4education
Exemplo prático – v2
![Page 20: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/20.jpg)
Globalcode – Open4education
Exemplo prático – v2
![Page 21: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/21.jpg)
Globalcode – Open4education
Exemplo prático – v3
ScaffoldingModelos e repositórios gerados automaticamente:
![Page 22: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/22.jpg)
Globalcode – Open4education
Resultados
Total de linhas de código (5 colunas/classe)
Classes Linhas v1 Linhas v2 Redução (%)1 202 246 -22%2 315 328 -4%3 428 410 4%4 541 492 9%5 654 574 12%6 767 656 14%7 880 738 16%8 993 820 17%9 1106 902 18%10 1219 984 19%
![Page 23: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/23.jpg)
Globalcode – Open4education
Resultados
Linhas adicionadas quando há uma nova entidade
Linhas v1 Linhas v2 Redução (%)113 82 27%
![Page 24: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/24.jpg)
Globalcode – Open4education
Resultados
Linhas escritas usando scaffolding
Linhas v1 Linhas v3 Redução (%)113 2 98%
![Page 25: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/25.jpg)
Globalcode – Open4education
Resultados
Complexidade do código
![Page 26: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/26.jpg)
Globalcode – Open4education
Resultados
Complexidade do códigoAumentou devido ao uso de reflection e scaffolding
![Page 27: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/27.jpg)
Globalcode – Open4education
Resultados
Complexidade do códigoAumentou devido ao uso de reflection e scaffolding.
Mais difícil de tornar o código mais flexível (e.g.: aceitar relacionamentos de modelos)
![Page 28: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/28.jpg)
Globalcode – Open4education
Resultados
Segurança
![Page 29: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/29.jpg)
Globalcode – Open4education
Resultados
SegurançaDeve-se ter cuidado com os usos de reflection
![Page 30: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/30.jpg)
Globalcode – Open4education
Resultados
Extensibilidade
![Page 31: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/31.jpg)
Globalcode – Open4education
Resultados
ExtensibilidadeExige menos tempo para que um desenvolvedor adicione novas entidades com as convenções esperadas.
Vai exigir um pouco mais de tempo para aceitar outros tipos de entradas (e.g.: FK)
![Page 32: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/32.jpg)
Globalcode – Open4education
Conclusão
Há ganhos consideráveis de produtividade, especialmente se a técnica de scaffolding for utilizada.
Adicionar novas entidades pode ter o custo de executar um comando, porém isto exige que haja um investimento inicial maior de tempo.
Exige-se um planejamento maior (prever mudanças futuras) para não deixar o código inflexível.
Aspectos como segurança e complexidade devem ser considerados.
![Page 33: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/33.jpg)
Globalcode – Open4education
Considerações finais
O que vai ser feito no futuro e com qual frequência?
Quais são os impactos em segurança e flexibilidade?
O investimento é válido?
![Page 34: TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration](https://reader033.vdocuments.pub/reader033/viewer/2022051710/5a6554ad7f8b9a5b558b6c09/html5/thumbnails/34.jpg)