O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Globalcode – Open4education
Trilha – Java
Paulo Soares
Software Architect at McKinsey Digital Labs
Globalcode – Open4education
Convention Over Configuration
Roteiro
Motivação
Exemplo prático
Resultados
Conclusão
Considera...
Globalcode – Open4education
Motivação
Produtividade
Globalcode – Open4education
Motivação
Produtividade
Dev Time = # Decisions * Mean Implementation Time
Globalcode – Open4education
Motivação
Produtividade
Dev Time = # Decisions * Mean Implementation Time
Menos decisões
Globalcode – Open4education
Motivação
Produtividade
Dev Time = # Decisions * Mean Implementation Time
Menos decisões
Globalcode – Open4education
Motivação
Produtividade
Dev Time = # Decisions * Mean Implementation Time
Menos decisões
Mais ...
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform
Load)
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform
Load)
Entrada
Planilha CSV com d...
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform
Load)
Entrada
Planilha CSV com d...
Globalcode – Open4education
Exemplo prático
Problema: Construir um ETL (Extract Transform
Load)
Entrada
Planilha CSV com d...
Globalcode – Open4education
Exemplo prático – v1
Globalcode – Open4education
Exemplo prático – v1
Globalcode – Open4education
Exemplo prático – v1
Globalcode – Open4education
Exemplo prático – v1
Globalcode – Open4education
Exemplo prático – v1
Globalcode – Open4education
Exemplo prático – v1
Globalcode – Open4education
Exemplo prático – v2
Globalcode – Open4education
Exemplo prático – v2
Globalcode – Open4education
Exemplo prático – v2
Globalcode – Open4education
Exemplo prático – v3
Scaffolding
Modelos e repositórios gerados automaticamente:
Globalcode – Open4education
Resultados
Total de linhas de código (5 colunas/classe)
Classes Linhas v1 Linhas v2 Redução (%...
Globalcode – Open4education
Resultados
Linhas adicionadas quando há uma nova entidade
Linhas v1 Linhas v2 Redução (%)
113 ...
Globalcode – Open4education
Resultados
Linhas escritas usando scaffolding
Linhas v1 Linhas v3 Redução (%)
113 2 98%
Globalcode – Open4education
Resultados
Complexidade do código
Globalcode – Open4education
Resultados
Complexidade do código
Aumentou devido ao uso de reflection e scaffolding
Globalcode – Open4education
Resultados
Complexidade do código
Aumentou devido ao uso de reflection e scaffolding.
Mais dif...
Globalcode – Open4education
Resultados
Segurança
Globalcode – Open4education
Resultados
Segurança
Deve-se ter cuidado com os usos de reflection
Globalcode – Open4education
Resultados
Extensibilidade
Globalcode – Open4education
Resultados
Extensibilidade
Exige menos tempo para que um desenvolvedor
adicione novas entidade...
Globalcode – Open4education
Conclusão
Há ganhos consideráveis de produtividade, especialmente se a técnica de
scaffolding ...
Globalcode – Open4education
Considerações finais
O que vai ser feito no futuro e com qual frequência?
Quais são os impacto...
TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Conf...
Próximos SlideShares
Carregando em…5
×

TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

88 visualizações

Publicada em

É possível ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration?

Publicada em: Educação
  • Seja o primeiro a comentar

TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection e Convention over Configuration

  1. 1. Globalcode – Open4education Trilha – Java Paulo Soares Software Architect at McKinsey Digital Labs
  2. 2. Globalcode – Open4education Convention Over Configuration Roteiro Motivação Exemplo prático Resultados Conclusão Considerações finais
  3. 3. Globalcode – Open4education Motivação Produtividade
  4. 4. Globalcode – Open4education Motivação Produtividade Dev Time = # Decisions * Mean Implementation Time
  5. 5. Globalcode – Open4education Motivação Produtividade Dev Time = # Decisions * Mean Implementation Time Menos decisões
  6. 6. Globalcode – Open4education Motivação Produtividade Dev Time = # Decisions * Mean Implementation Time Menos decisões
  7. 7. Globalcode – Open4education Motivação Produtividade Dev Time = # Decisions * Mean Implementation Time Menos decisões Mais experiência
  8. 8. Globalcode – Open4education Exemplo prático Problema: Construir um ETL (Extract Transform Load)
  9. 9. Globalcode – Open4education Exemplo prático Problema: Construir um ETL (Extract Transform Load) Entrada Planilha CSV com dados de clientes
  10. 10. Globalcode – Open4education Exemplo prático Problema: Construir um ETL (Extract Transform Load) Entrada Planilha CSV com dados de clientes Resultado esperado Dados dos clientes devem ser salvos em uma base de dados
  11. 11. Globalcode – Open4education Exemplo prático Problema: Construir um ETL (Extract Transform Load) Entrada Planilha CSV com dados de clientes Resultado esperado Dados dos clientes devem ser salvos em uma base de dados Contexto Formato do CSV e db schema são negociáveis.
  12. 12. Globalcode – Open4education Exemplo prático – v1
  13. 13. Globalcode – Open4education Exemplo prático – v1
  14. 14. Globalcode – Open4education Exemplo prático – v1
  15. 15. Globalcode – Open4education Exemplo prático – v1
  16. 16. Globalcode – Open4education Exemplo prático – v1
  17. 17. Globalcode – Open4education Exemplo prático – v1
  18. 18. Globalcode – Open4education Exemplo prático – v2
  19. 19. Globalcode – Open4education Exemplo prático – v2
  20. 20. Globalcode – Open4education Exemplo prático – v2
  21. 21. Globalcode – Open4education Exemplo prático – v3 Scaffolding Modelos e repositórios gerados automaticamente:
  22. 22. 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%
  23. 23. Globalcode – Open4education Resultados Linhas adicionadas quando há uma nova entidade Linhas v1 Linhas v2 Redução (%) 113 82 27%
  24. 24. Globalcode – Open4education Resultados Linhas escritas usando scaffolding Linhas v1 Linhas v3 Redução (%) 113 2 98%
  25. 25. Globalcode – Open4education Resultados Complexidade do código
  26. 26. Globalcode – Open4education Resultados Complexidade do código Aumentou devido ao uso de reflection e scaffolding
  27. 27. Globalcode – Open4education Resultados Complexidade do código Aumentou devido ao uso de reflection e scaffolding. Mais difícil de tornar o código mais flexível (e.g.: aceitar relacionamentos de modelos)
  28. 28. Globalcode – Open4education Resultados Segurança
  29. 29. Globalcode – Open4education Resultados Segurança Deve-se ter cuidado com os usos de reflection
  30. 30. Globalcode – Open4education Resultados Extensibilidade
  31. 31. Globalcode – Open4education Resultados Extensibilidade Exige 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)
  32. 32. 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.
  33. 33. 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?

×