TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection...

Post on 22-Jan-2018

61 views 0 download

Transcript of TDC2017|SP - Trilha Java E possivel ser mais produtivo em Java aplicando os conceitos de Reflection...

Globalcode – Open4education

Trilha – JavaPaulo Soares

Software Architect at McKinsey Digital Labs

Globalcode – Open4education

Convention Over Configuration

RoteiroMotivação

Exemplo prático

Resultados

Conclusão

Considerações finais

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 experiência

Globalcode – Open4education

Exemplo prático

Problema: Construir um ETL (Extract Transform Load)

Globalcode – Open4education

Exemplo prático

Problema: Construir um ETL (Extract Transform Load)

EntradaPlanilha CSV com dados de clientes

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

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.

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

ScaffoldingModelos e repositórios gerados automaticamente:

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%

Globalcode – Open4education

Resultados

Linhas adicionadas quando há uma nova entidade

Linhas v1 Linhas v2 Redução (%)113 82 27%

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ódigoAumentou devido ao uso de reflection e scaffolding

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)

Globalcode – Open4education

Resultados

Segurança

Globalcode – Open4education

Resultados

SegurançaDeve-se ter cuidado com os usos de reflection

Globalcode – Open4education

Resultados

Extensibilidade

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)

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.

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?