Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Código Limpo

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Alexsander Melo Alexsander Melo
October 25, 2018
100

Código Limpo

Talk realizado no Inmetrics day de 2017 sobre a importância sobre código limpo.

Avatar for Alexsander Melo

Alexsander Melo

October 25, 2018
Tweet

Transcript

  1. Alexsander Melo (Pará) ▪ Analista de Desempenho ▪ Programador Sênior

    ▪ Experiência de mais de 10 anos com Tecnologia Java ▪ Principal projeto : PSIM (Physical Security Information Management) - Banco do Brasil ▪ Ex-atleta de Futebol Americano (Defensive End) Apresentação Quem sou eu?
  2. ▪ Alguns obstáculos ▪ O que é código limpo? ▪

    Quais os principais benefícios? ▪ Como aplicar? Código Limpo Práticas para um bom código Código Limpo: Habilidades Práticas do Agile Software Robert C. Martin, 2009
  3. Obstáculos Código Ruim Algum dia Resolveu o Problema Complexo para

    Aplicar Mudanças Complexo para Aplicar Correções de Bugs Complexo para Aplicar Novas Instruções
  4. Obstáculos Tempo 1 Cultura do Imediatismo Metas cada vez mais

    desafiadoras e pressão por desempenho no curto prazo 2 Time to Market Garantia de entrega do produto, no tempo de mercado
  5. ▪ Produtividade tende a diminuir ao longo do tempo; ▪

    Requisito do recurso ser sênior; ▪ Adição de mais recursos à equipe; ▪ Retrabalho. Obstáculos Custo 0 20 40 60 80 100 Produtividade Tempo Produtividade X Tempo (Robert C. Martin, 2009)
  6. Código Limpo O que é Código Limpo Código Limpo 1

    - Uso disciplinado de inúmeras técnicas 2 - Código de lógica direta e com abstração clara 3 - Estratégia clara de tratamento de erro 4 -Ótima cobertura de teste unitário
  7. Código Limpo Benefícios Principais Benefícios 4 -Economia de tempo 3

    - Mostra Profissionalismo 2 - Facilita a edição 1 – Menor ocorrência de bugs
  8. Código Limpo Como Fazer? ▪ Evitar abreviaturas; ▪ Usar nomes

    do domínio do problema; ▪ Nomes dos Métodos serem descritivos; ▪ Evitar números e strings “mágicas” (Criar Constantes). 01 - Nomes Significativos ▪ Responsabilidade única; ▪ TDD; ▪ Indentação; ▪ Regra decrescente; ▪ Refatorar; ▪ Evitar quantidade excessiva de parâmetros; ▪ Evitar parâmetros de saída; ▪ Evitar efeitos colaterais; ▪ Trate as exceções ao invés retornar código de erro. 02 - Métodos
  9. 1 2 3 Código Limpo Exemplo – Código Ruim public

    class EntryPoint { public static void main(String[] args) throws Exception { String realBaseDir = args[0]; File file = new File(realBaseDir); String[] directories = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return new File(dir, name).isDirectory(); } }); ArrayList<RobotImpl> robots = new ArrayList<RobotImpl>(); for (String dir : directories) { if (!dir.startsWith(".") && !dir.equals("robot_logs")) { RobotImpl r = new RobotImpl(realBaseDir + File.separator); r._initialize(dir); robots.add(r); } } for (RobotImpl r : robots) { try { r._start(); } catch (RobotException e) { e.printStackTrace(); } Thread.sleep(1000); } } }
  10. 3 2 1 Código Limpo Exemplo – Código Limpo public

    class EntryPoint { private String[] directories; private String realBaseDir; private ArrayList<RobotImpl> robos; public static void main(String[] args) throws Exception{ EntryPoint entryPoint = new EntryPoint(); entryPoint.run(args[0]); } public void run(String realBaseDir) throws Exception{ this.realBaseDir = realBaseDir; listarDiretorios(); listarRobos(); inicializarRobos(); } private void listarDiretorios(){ [...] } private void listarRobos(){ [...] } private void inicializarRobos() throws Exception{ [...] } }