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

Código Limpo

Alexsander Melo
October 25, 2018
66

Código Limpo

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

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{ [...] } }