SlideShare una empresa de Scribd logo
1 de 19
Dezembro/2012
A Importância do Código Limpo na
Perspectiva dos Desenvolvedores e
Empresas de Software
Aluno: Joberto Diniz Junior
Orientador: Dr. Djalma Domingos da Silva
Roteiro
1. Introdução
2. Fundamentação Teórica
3. Métodos
4. Resultado e Discussão
5. Conclusão
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
2
1. Introdução
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
3
Por que essa estrutura
está aqui?
Para onde será que essa
ponte leva?
Essa placa não me ajuda
muito.
//Esta é a ponte
1.1 Justificativa
 Desenvolvedores
“Escrever código limpo é o que você deve fazer a fim de se intitular
um profissional. Não há nenhuma desculpa razoável para fazer nada
menos que o seu melhor” (Martin, 2009)
 Empresas
 Melhor qualidade de código
 Diminuição de bugs
 Manutenção eficiente e rápida
 Menores custos
 Clientes mais satisfeitos
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
4
1.2 Problema
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
5
1.2 Problema
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
6
Encontrando o nosso
caminho através do código
ruim
1.3 Objetivo
 Mostrar as técnicas do Código Limpo
 Mostrar as vantagens do Código Limpo
 Através
• Experimento
• Análise Estatística
 Analisando Métricas
• Tempo gasto
• Quantidade de linhas
• Índice de manutenibilidade
• Complexidade ciclomática
 Questionário
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
7
2.1 Código ruim custa caro
Menor produtividade = gerência
adicionando mais membros = maior custo
Pode levar a falência
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
8
2.2 O que é Código Limpo?
 “Escrever um código limpo exige o uso
disciplinado de uma miríade de pequenas
técnicas aplicadas por meio de uma
sensibilidade meticulosamente adquirida
sobre “limpeza”. A “sensibilidade ao
código” é o segredo. Alguns de nós já
nascemos com ela. Outros precisam se
esforçar para adquiri-la.” (Martin, 2008)
 Um código limpo sempre parece que foi
escrito por alguém que se
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
9
importava
2.3 Nomes significativos
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
10
Evitar abreviaturas
Usar nomes do domínio do problema
Renomear / Refatorar
Evitar números e strings “mágicas”
 Criar constantes
2.4 SOLID
Princípio da Responsabilidade Única
Princípio Aberto-Fechado
Princípio da Substituição de Liskov
Princípio da Segregação de Interface
Princípio da Inversão de Dependência
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
11
2.5 Referência nula
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
12
Charles Hoare
 Meu erro de
bilhões de dólares
Utilizar padrão de
projeto Objeto
Nulo
2.6 Testes unitários
Uma forma de documentação
Impacto na Arquitetura e Design do
sistema
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
13
3. Métodos
Amostra
Experimento
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
14
4.1 Manutenibilidade
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
15
Lim
po
C
onvencional
0
25
50
75
100
0,036
Indice de manutenibilidade
Media(desvio-padrão)
4.2 Tempo
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
16
Lim
po
C
onvencional
0
25
50
75
100
0,019
Tempo
Minutos
Media(desvio-padrão)
4.3 Quantidade de linhas
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
17
Lim
po
C
onvencional
0
25
50
75
100
0,001
Linhas de código
Media(desvio-padrão)
4.4 Características Subjetivas
Facilidade de leitura do código
Facilidade para adição de nova
funcionalidade
Tamanho de classes e métodos
Comentários ajudam?
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
18
5. Conclusão
A Importância do Código Limpo na Perspectiva dos
Desenvolvedores e Empresas de Software
19
Treinamento Empresarial
Treinamento Individual

Más contenido relacionado

La actualidad más candente

Construindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon RedshiftConstruindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon RedshiftAmazon Web Services LATAM
 
Programação em Banco de Dados - Aula 23/08/2018
Programação em Banco de Dados - Aula 23/08/2018Programação em Banco de Dados - Aula 23/08/2018
Programação em Banco de Dados - Aula 23/08/2018Elaine Cecília Gatto
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08André Phillip Bertoletti
 
Anelideos
AnelideosAnelideos
AnelideosURCA
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em PythonRober Guerra
 
Celular prcariontes e eucariontes
Celular prcariontes e eucariontesCelular prcariontes e eucariontes
Celular prcariontes e eucariontesPedro Lopes
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binariaRicardo Bolanho
 
Excel Intermediário
Excel IntermediárioExcel Intermediário
Excel Intermediárioaprcds
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosMarcos Castro
 
Clean Code: Successive Refinement
Clean Code: Successive RefinementClean Code: Successive Refinement
Clean Code: Successive RefinementAli A Jalil
 

La actualidad más candente (20)

Algoritmo recursivo
Algoritmo recursivoAlgoritmo recursivo
Algoritmo recursivo
 
Núcleo celular
Núcleo celular  Núcleo celular
Núcleo celular
 
Introdução a ciência de dados com Python
Introdução a ciência de dados com PythonIntrodução a ciência de dados com Python
Introdução a ciência de dados com Python
 
Sist respiratorio
Sist respiratorioSist respiratorio
Sist respiratorio
 
Construindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon RedshiftConstruindo um Data Warehouse moderno com Amazon Redshift
Construindo um Data Warehouse moderno com Amazon Redshift
 
Programação em Banco de Dados - Aula 23/08/2018
Programação em Banco de Dados - Aula 23/08/2018Programação em Banco de Dados - Aula 23/08/2018
Programação em Banco de Dados - Aula 23/08/2018
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
Anelideos
AnelideosAnelideos
Anelideos
 
Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em Python
 
Nervios Craneales
Nervios CranealesNervios Craneales
Nervios Craneales
 
Moluscos Cefalópodes
Moluscos CefalópodesMoluscos Cefalópodes
Moluscos Cefalópodes
 
Celular prcariontes e eucariontes
Celular prcariontes e eucariontesCelular prcariontes e eucariontes
Celular prcariontes e eucariontes
 
Writing clean code
Writing clean codeWriting clean code
Writing clean code
 
15 algoritmos de busca em tabelas - sequencial e binaria
15   algoritmos de busca em tabelas - sequencial e binaria15   algoritmos de busca em tabelas - sequencial e binaria
15 algoritmos de busca em tabelas - sequencial e binaria
 
Excel Intermediário
Excel IntermediárioExcel Intermediário
Excel Intermediário
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
Clean Code: Successive Refinement
Clean Code: Successive RefinementClean Code: Successive Refinement
Clean Code: Successive Refinement
 
Aula02
Aula02Aula02
Aula02
 

Similar a TCC - Código Limpo

A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...Joberto Diniz
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareGabriel Felipe Soares
 
Programando com prazer com DDD
Programando com prazer com DDDProgramando com prazer com DDD
Programando com prazer com DDDGiovanni Bassi
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...André Paulovich
 
Impacto do DevOps nos negócios
Impacto do DevOps nos negóciosImpacto do DevOps nos negócios
Impacto do DevOps nos negóciosRamon Durães
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!Isaac de Souza
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0tdc-globalcode
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
NITECH - EVENT STORM
NITECH - EVENT STORM NITECH - EVENT STORM
NITECH - EVENT STORM NitechAcademy
 
NITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNitechAcademy
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 

Similar a TCC - Código Limpo (20)

A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas d...
 
clean code
clean codeclean code
clean code
 
Clean Code na Prática
Clean Code na PráticaClean Code na Prática
Clean Code na Prática
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de Software
 
Programando com prazer com DDD
Programando com prazer com DDDProgramando com prazer com DDD
Programando com prazer com DDD
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
 
Impacto do DevOps nos negócios
Impacto do DevOps nos negóciosImpacto do DevOps nos negócios
Impacto do DevOps nos negócios
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
NITECH - EVENT STORM
NITECH - EVENT STORM NITECH - EVENT STORM
NITECH - EVENT STORM
 
NITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdfNITECH - EVENT STORM revisado 25Set.pdf
NITECH - EVENT STORM revisado 25Set.pdf
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 

Último

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
 
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
 
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
 
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 - 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
 
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
 
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 - 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
 

Último (9)

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
 
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
 
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
 
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 - 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
 
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
 
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 - 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
 

TCC - Código Limpo

  • 1. Dezembro/2012 A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software Aluno: Joberto Diniz Junior Orientador: Dr. Djalma Domingos da Silva
  • 2. Roteiro 1. Introdução 2. Fundamentação Teórica 3. Métodos 4. Resultado e Discussão 5. Conclusão A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 2
  • 3. 1. Introdução A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 3 Por que essa estrutura está aqui? Para onde será que essa ponte leva? Essa placa não me ajuda muito. //Esta é a ponte
  • 4. 1.1 Justificativa  Desenvolvedores “Escrever código limpo é o que você deve fazer a fim de se intitular um profissional. Não há nenhuma desculpa razoável para fazer nada menos que o seu melhor” (Martin, 2009)  Empresas  Melhor qualidade de código  Diminuição de bugs  Manutenção eficiente e rápida  Menores custos  Clientes mais satisfeitos A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 4
  • 5. 1.2 Problema A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 5
  • 6. 1.2 Problema A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 6 Encontrando o nosso caminho através do código ruim
  • 7. 1.3 Objetivo  Mostrar as técnicas do Código Limpo  Mostrar as vantagens do Código Limpo  Através • Experimento • Análise Estatística  Analisando Métricas • Tempo gasto • Quantidade de linhas • Índice de manutenibilidade • Complexidade ciclomática  Questionário A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 7
  • 8. 2.1 Código ruim custa caro Menor produtividade = gerência adicionando mais membros = maior custo Pode levar a falência A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 8
  • 9. 2.2 O que é Código Limpo?  “Escrever um código limpo exige o uso disciplinado de uma miríade de pequenas técnicas aplicadas por meio de uma sensibilidade meticulosamente adquirida sobre “limpeza”. A “sensibilidade ao código” é o segredo. Alguns de nós já nascemos com ela. Outros precisam se esforçar para adquiri-la.” (Martin, 2008)  Um código limpo sempre parece que foi escrito por alguém que se A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 9 importava
  • 10. 2.3 Nomes significativos A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 10 Evitar abreviaturas Usar nomes do domínio do problema Renomear / Refatorar Evitar números e strings “mágicas”  Criar constantes
  • 11. 2.4 SOLID Princípio da Responsabilidade Única Princípio Aberto-Fechado Princípio da Substituição de Liskov Princípio da Segregação de Interface Princípio da Inversão de Dependência A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 11
  • 12. 2.5 Referência nula A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 12 Charles Hoare  Meu erro de bilhões de dólares Utilizar padrão de projeto Objeto Nulo
  • 13. 2.6 Testes unitários Uma forma de documentação Impacto na Arquitetura e Design do sistema A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 13
  • 14. 3. Métodos Amostra Experimento A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 14
  • 15. 4.1 Manutenibilidade A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 15 Lim po C onvencional 0 25 50 75 100 0,036 Indice de manutenibilidade Media(desvio-padrão)
  • 16. 4.2 Tempo A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 16 Lim po C onvencional 0 25 50 75 100 0,019 Tempo Minutos Media(desvio-padrão)
  • 17. 4.3 Quantidade de linhas A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 17 Lim po C onvencional 0 25 50 75 100 0,001 Linhas de código Media(desvio-padrão)
  • 18. 4.4 Características Subjetivas Facilidade de leitura do código Facilidade para adição de nova funcionalidade Tamanho de classes e métodos Comentários ajudam? A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 18
  • 19. 5. Conclusão A Importância do Código Limpo na Perspectiva dos Desenvolvedores e Empresas de Software 19 Treinamento Empresarial Treinamento Individual