SlideShare a Scribd company logo
1 of 48
Otimização prematura é a raiz de
todos os problemas. Código limpo é
           otimização?
 Lucas Cavalcanti
 @lucascs
 http://lucas.cavalcanti.me
Código Limpo
Nomes bons
public class BATATINHA {
    public static double[] To_a_fim_de_ir_na_praia(double mIGuXEixxX, double Bolacha, double LEITE) {
       if (mIGuXEixxX == 0.0) {
           throw new putzdeupipocomano("po bixo, isso num pode ser zero naum!!!!");
       }

        // cara, ela ta moh nervosa hoje! Aquela saia justa com o chefe foi tensa.
        double hoje_a_martinha_ta_nervosa = Bolacha * Bolacha - 4 * LEITE * mIGuXEixxX;

        if (hoje_a_martinha_ta_nervosa < 0.0) {
            throw new putzdeupipocomano("xiiii a bagaça ta negativa");
        }

        // ontem fui no cinema ver o filme do batman. Kra, o filme é bom pra kct!
        double variable114 = (-Bolacha + Math.sqrt(hoje_a_martinha_ta_nervosa)) / (2 * mIGuXEixxX);
        double variable115 = (-Bolacha - Math.sqrt(hoje_a_martinha_ta_nervosa)) / (2 * mIGuXEixxX);
        double[] AAAAA = new double[2];
        AAAAA[0] = variable114;
        AAAAA[1] = variable115;

        // estou com fome agora, acho que vo pedi uma pizza!!!!!
        return AAAAA;
    }
}
Orientação a Objetos
Métodos pequenos
Classes pequenas
SOLID
DRY

Produtos produtos = new Produtos();
Produto produto = new Produto();
produto.setNomeProduto("Meu produto");
produto.setPrecoProduto(42);
produtos.adicionaProduto(produto);
KISS
“Continuous attention to technical
excellence and good design enhances
              agility.”
                    – Agile Manifesto


  “Atenção contínua à excelência
      técnica e ao bom design
     engrandecem a agilidade”
Testes automatizados
Testes de Unidade
Testes de integração
Testes End-to-end
TDD


        Implemente
Teste

                     Refatore
“Working software is the primary
    measure of progress.”
                          – Agile Manifesto

  “Software funcionando é a principal
         medida de progresso”
Integração Contínua
Build pipeline
Entrega contínua
Por que fazemos código limpo?
Por que sim!
Por que é legal!
Por que é uma arte!
Para facilitar a manutenção!!!
Para otimizar a maintainability!
“Our highest priority is to satisfy the
customer through early and continuous
    delivery of valuable software.”
                              – Agile Manifesto


  “Nossa maior prioridade é satisfazer o cliente
   através de entrega contínua e desde cedo
             de software de valor.”
Early = cedo
“Otimização prematura
é a raiz de todos os males”
             – Donald E. Knuth
“Programmers waste enormous amounts of time
thinking about, or worrying about, the speed of
noncritical parts of their programs, and these attempts
at efficiency actually have a strong negative impact
when debugging and maintenance are considered. We
should forget about small efficiencies, say about 97%
of the time: premature optimization is the root of all
evil. Yet we should not pass up our opportunities in
that critical 3%.”           – Donald E. Knuth
“Programmers waste enormous amounts of time
thinking about, or worrying about, the maintainability
of noncritical parts of their programs, and these
attempts at efficiency actually have a strong negative
impact when debugging and maintenance are
considered. We should forget about small efficiencies,
say about 97% of the time: premature optimization is
the root of all evil. Yet we should not pass up our
opportunities in that critical 3%.”
“Programmers waste enormous amounts of time
thinking about, or worrying about, the maintainability
of noncritical parts of their programs, and these
attempts at efficiency actually have a strong negative
impact when early delivery are considered. We should
forget about small efficiencies, say about 80% of the
time: premature optimization is the root of all evil. Yet
we should not pass up our opportunities in that critical
20%.”
                               – Lucas Cavalcanti
http://martinfowler.com/bliki/DesignStaminaHypothesis.html
Quarto deploy com valor pro cliente
Terceiro deploy com valor pro cliente
Segundo deploy com valor pro cliente
Primeiro deploy com valor pro cliente
Sétimo deploy com valor pro cliente
Sexto deploy com valor pro cliente
Quinto deploy com valor pro cliente
Quarto deploy com valor pro cliente
Terceiro deploy com valor pro cliente
Segundo deploy com valor pro cliente
Primeiro deploy com valor pro cliente
“Simplicity – the art of maximizing the
amount of work not done – is essential.”
                              – Agile Manifesto




     “Simplicidade – a arte de maximizar a
  quantidade de trabalho não feito – é essencial”
“Programmers waste enormous amounts of time
thinking about, or worrying about, the maintainability
of noncritical parts of their programs, and these
attempts at efficiency actually have a strong negative
impact when early delivery are considered. We should
forget about small efficiencies, say about 80% of the
time: premature optimization is the root of all evil. Yet
we should not pass up our opportunities in that critical
20%.”
Conheça as boas práticas!
Mas... não tente atingir a perfeição
           logo de cara
  A não ser que já seja a forma natural ;)
A mudança mais simples primeiro
Melhorias contínuas!
O que muda mais
tende a ficar melhor
O que muda pouco
fica com o código menos limpo
Otimize constantemente
 Mas não otimize tudo
Obrigado!



Lucas Cavalcanti
@lucascs
http://lucas.cavalcanti.me

More Related Content

What's hot

Implantando Scrum, experiências de um Agile Coach
Implantando Scrum, experiências de um Agile CoachImplantando Scrum, experiências de um Agile Coach
Implantando Scrum, experiências de um Agile CoachRodrigo Yoshima
 
Cost of delay - Comunicando o impacto do tempo no valor
Cost of delay - Comunicando o impacto do tempo no valorCost of delay - Comunicando o impacto do tempo no valor
Cost of delay - Comunicando o impacto do tempo no valorRodrigo Yoshima
 
Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Juan Bernabó
 
Desenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XPDesenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XPlucianocoelho
 
Palestra Gestão Lean para o Desenvolvimento de Software - Manoel Pimentel
Palestra Gestão Lean para o Desenvolvimento de Software  - Manoel PimentelPalestra Gestão Lean para o Desenvolvimento de Software  - Manoel Pimentel
Palestra Gestão Lean para o Desenvolvimento de Software - Manoel PimentelManoel Pimentel Medeiros
 
Gestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times ScrumGestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times ScrumMarcos Garrido
 
Métodos Ágeis - Manifesto Ágil, Scrum e XP
Métodos Ágeis - Manifesto Ágil, Scrum e XPMétodos Ágeis - Manifesto Ágil, Scrum e XP
Métodos Ágeis - Manifesto Ágil, Scrum e XPJoaquim Lopes Júnior
 
Como cultivar uma cultura Kaizen?
Como cultivar uma cultura Kaizen?Como cultivar uma cultura Kaizen?
Como cultivar uma cultura Kaizen?Rodrigo Yoshima
 
Aula 3 economia e administração farmacia 23-08-2021
Aula 3 economia e administração   farmacia 23-08-2021Aula 3 economia e administração   farmacia 23-08-2021
Aula 3 economia e administração farmacia 23-08-2021Euripedes Silva
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentJuarez Monteiro
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasKleitor Franklint Correa Araujo
 
Quebrando Histórias de Usuário
Quebrando Histórias de UsuárioQuebrando Histórias de Usuário
Quebrando Histórias de UsuárioGiuliano Sposito
 
Kanban: agilidade para ambientes conservadores
Kanban: agilidade para ambientes conservadoresKanban: agilidade para ambientes conservadores
Kanban: agilidade para ambientes conservadoresRodrigo Yoshima
 

What's hot (20)

Implantando Scrum, experiências de um Agile Coach
Implantando Scrum, experiências de um Agile CoachImplantando Scrum, experiências de um Agile Coach
Implantando Scrum, experiências de um Agile Coach
 
Cost of delay - Comunicando o impacto do tempo no valor
Cost of delay - Comunicando o impacto do tempo no valorCost of delay - Comunicando o impacto do tempo no valor
Cost of delay - Comunicando o impacto do tempo no valor
 
Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0
 
Modelagem com historias bem além dos requisitos
Modelagem com historias bem além dos requisitosModelagem com historias bem além dos requisitos
Modelagem com historias bem além dos requisitos
 
Engenharia de software Lean Kanban
Engenharia de software  Lean KanbanEngenharia de software  Lean Kanban
Engenharia de software Lean Kanban
 
Desenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XPDesenvolvimento Ágil com Scrum e XP
Desenvolvimento Ágil com Scrum e XP
 
Metricas (e previsões) acionáveis de projeto
Metricas (e previsões) acionáveis de projetoMetricas (e previsões) acionáveis de projeto
Metricas (e previsões) acionáveis de projeto
 
Palestra Gestão Lean para o Desenvolvimento de Software - Manoel Pimentel
Palestra Gestão Lean para o Desenvolvimento de Software  - Manoel PimentelPalestra Gestão Lean para o Desenvolvimento de Software  - Manoel Pimentel
Palestra Gestão Lean para o Desenvolvimento de Software - Manoel Pimentel
 
Gestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times ScrumGestão Ágil de Produtos com Lean Startup para times Scrum
Gestão Ágil de Produtos com Lean Startup para times Scrum
 
Métodos Ágeis - Manifesto Ágil, Scrum e XP
Métodos Ágeis - Manifesto Ágil, Scrum e XPMétodos Ágeis - Manifesto Ágil, Scrum e XP
Métodos Ágeis - Manifesto Ágil, Scrum e XP
 
Como cultivar uma cultura Kaizen?
Como cultivar uma cultura Kaizen?Como cultivar uma cultura Kaizen?
Como cultivar uma cultura Kaizen?
 
Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
Teste de software gestao e kaizen
Teste de software gestao e kaizenTeste de software gestao e kaizen
Teste de software gestao e kaizen
 
Aula 3 economia e administração farmacia 23-08-2021
Aula 3 economia e administração   farmacia 23-08-2021Aula 3 economia e administração   farmacia 23-08-2021
Aula 3 economia e administração farmacia 23-08-2021
 
Lean software
Lean software Lean software
Lean software
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
Quebrando Histórias de Usuário
Quebrando Histórias de UsuárioQuebrando Histórias de Usuário
Quebrando Histórias de Usuário
 
7 passos para um bom kaizen
7 passos para um bom kaizen7 passos para um bom kaizen
7 passos para um bom kaizen
 
Kanban: agilidade para ambientes conservadores
Kanban: agilidade para ambientes conservadoresKanban: agilidade para ambientes conservadores
Kanban: agilidade para ambientes conservadores
 

Similar to Otimizacao prematura-agile-brazil-12

Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM codebits
 
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...Daniel Wildt
 
Prototipagem e MVP para startups
Prototipagem e MVP para startupsPrototipagem e MVP para startups
Prototipagem e MVP para startupsJennifer Payne
 
Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoValquíria Duarte D'Amato
 
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempreGerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempreLeandro Faria
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 

Similar to Otimizacao prematura-agile-brazil-12 (20)

Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM Desenvolvimento Ágil de Software com SCRUM
Desenvolvimento Ágil de Software com SCRUM
 
Entregando Software com Valor
Entregando Software com ValorEntregando Software com Valor
Entregando Software com Valor
 
O Mal do Produtismo
O Mal do ProdutismoO Mal do Produtismo
O Mal do Produtismo
 
Aula03 04 agile_scrum_xp
Aula03 04 agile_scrum_xpAula03 04 agile_scrum_xp
Aula03 04 agile_scrum_xp
 
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
RSJUG Day - Ferramentas Para Projetos Java Usando Metodologias Ageis - Daniel...
 
DevOps
DevOpsDevOps
DevOps
 
Treinamento - Scrum.pptx
Treinamento - Scrum.pptxTreinamento - Scrum.pptx
Treinamento - Scrum.pptx
 
2PHP_Metodologia
2PHP_Metodologia2PHP_Metodologia
2PHP_Metodologia
 
Direcao x Velocidade
Direcao x VelocidadeDirecao x Velocidade
Direcao x Velocidade
 
Cultura Lean Agile Weekend
Cultura Lean Agile WeekendCultura Lean Agile Weekend
Cultura Lean Agile Weekend
 
Precisa testar? - Parte 1
Precisa testar? - Parte 1Precisa testar? - Parte 1
Precisa testar? - Parte 1
 
Prototipagem e MVP para startups
Prototipagem e MVP para startupsPrototipagem e MVP para startups
Prototipagem e MVP para startups
 
Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projeto
 
Scrum
ScrumScrum
Scrum
 
T1 g8 iteração
T1 g8   iteraçãoT1 g8   iteração
T1 g8 iteração
 
Agile
AgileAgile
Agile
 
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempreGerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
Gerenciamento Ágil de Projetos, Uma nova abordagem para os desafio de sempre
 
Agile Economics
Agile EconomicsAgile Economics
Agile Economics
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 

More from Lucas Cavalcanti dos Santos

More from Lucas Cavalcanti dos Santos (7)

Complex made bearable Clojure conj 2019
Complex made bearable Clojure conj 2019Complex made bearable Clojure conj 2019
Complex made bearable Clojure conj 2019
 
Arquitetando uma instituição financeira moderna
Arquitetando uma instituição financeira modernaArquitetando uma instituição financeira moderna
Arquitetando uma instituição financeira moderna
 
Arquitetura funcional em microservices, 4 anos depois
Arquitetura funcional em microservices, 4 anos depoisArquitetura funcional em microservices, 4 anos depois
Arquitetura funcional em microservices, 4 anos depois
 
Microservices in Clojure
Microservices in ClojureMicroservices in Clojure
Microservices in Clojure
 
Building a powerful double entry accounting system
Building a powerful double entry accounting systemBuilding a powerful double entry accounting system
Building a powerful double entry accounting system
 
Testando a integracao entre serviços - Agile Brazil 2014
Testando a integracao entre serviços - Agile Brazil 2014Testando a integracao entre serviços - Agile Brazil 2014
Testando a integracao entre serviços - Agile Brazil 2014
 
O poder da linguagem Ruby e as suas consequências
O poder da linguagem Ruby e as suas consequênciasO poder da linguagem Ruby e as suas consequências
O poder da linguagem Ruby e as suas consequências
 

Recently uploaded

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Recently uploaded (9)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Otimizacao prematura-agile-brazil-12

  • 1. Otimização prematura é a raiz de todos os problemas. Código limpo é otimização? Lucas Cavalcanti @lucascs http://lucas.cavalcanti.me
  • 3. Nomes bons public class BATATINHA { public static double[] To_a_fim_de_ir_na_praia(double mIGuXEixxX, double Bolacha, double LEITE) { if (mIGuXEixxX == 0.0) { throw new putzdeupipocomano("po bixo, isso num pode ser zero naum!!!!"); } // cara, ela ta moh nervosa hoje! Aquela saia justa com o chefe foi tensa. double hoje_a_martinha_ta_nervosa = Bolacha * Bolacha - 4 * LEITE * mIGuXEixxX; if (hoje_a_martinha_ta_nervosa < 0.0) { throw new putzdeupipocomano("xiiii a bagaça ta negativa"); } // ontem fui no cinema ver o filme do batman. Kra, o filme é bom pra kct! double variable114 = (-Bolacha + Math.sqrt(hoje_a_martinha_ta_nervosa)) / (2 * mIGuXEixxX); double variable115 = (-Bolacha - Math.sqrt(hoje_a_martinha_ta_nervosa)) / (2 * mIGuXEixxX); double[] AAAAA = new double[2]; AAAAA[0] = variable114; AAAAA[1] = variable115; // estou com fome agora, acho que vo pedi uma pizza!!!!! return AAAAA; } }
  • 8. DRY Produtos produtos = new Produtos(); Produto produto = new Produto(); produto.setNomeProduto("Meu produto"); produto.setPrecoProduto(42); produtos.adicionaProduto(produto);
  • 10. “Continuous attention to technical excellence and good design enhances agility.” – Agile Manifesto “Atenção contínua à excelência técnica e ao bom design engrandecem a agilidade”
  • 15. TDD Implemente Teste Refatore
  • 16. “Working software is the primary measure of progress.” – Agile Manifesto “Software funcionando é a principal medida de progresso”
  • 20. Por que fazemos código limpo?
  • 22. Por que é legal!
  • 23. Por que é uma arte!
  • 24. Para facilitar a manutenção!!!
  • 25. Para otimizar a maintainability!
  • 26. “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” – Agile Manifesto “Nossa maior prioridade é satisfazer o cliente através de entrega contínua e desde cedo de software de valor.”
  • 28. “Otimização prematura é a raiz de todos os males” – Donald E. Knuth
  • 29. “Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.” – Donald E. Knuth
  • 30. “Programmers waste enormous amounts of time thinking about, or worrying about, the maintainability of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.”
  • 31. “Programmers waste enormous amounts of time thinking about, or worrying about, the maintainability of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when early delivery are considered. We should forget about small efficiencies, say about 80% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 20%.” – Lucas Cavalcanti
  • 32.
  • 34.
  • 35. Quarto deploy com valor pro cliente Terceiro deploy com valor pro cliente Segundo deploy com valor pro cliente Primeiro deploy com valor pro cliente
  • 36.
  • 37. Sétimo deploy com valor pro cliente Sexto deploy com valor pro cliente Quinto deploy com valor pro cliente Quarto deploy com valor pro cliente Terceiro deploy com valor pro cliente Segundo deploy com valor pro cliente Primeiro deploy com valor pro cliente
  • 38.
  • 39. “Simplicity – the art of maximizing the amount of work not done – is essential.” – Agile Manifesto “Simplicidade – a arte de maximizar a quantidade de trabalho não feito – é essencial”
  • 40. “Programmers waste enormous amounts of time thinking about, or worrying about, the maintainability of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when early delivery are considered. We should forget about small efficiencies, say about 80% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 20%.”
  • 41. Conheça as boas práticas!
  • 42. Mas... não tente atingir a perfeição logo de cara A não ser que já seja a forma natural ;)
  • 43. A mudança mais simples primeiro
  • 45. O que muda mais tende a ficar melhor
  • 46. O que muda pouco fica com o código menos limpo
  • 47. Otimize constantemente Mas não otimize tudo