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

Peer Code Review An Agile Process
Peer Code Review An Agile ProcessPeer Code Review An Agile Process
Peer Code Review An Agile Processgsporar
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationJohn Ferguson Smart Limited
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKMário Pravato Junior
 
Automação de teste de software
Automação de teste de softwareAutomação de teste de software
Automação de teste de softwareQualister
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) CodeOps Technologies LLP
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsIosif Itkin
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиковUladzimir Kryvenka
 
Test Early, Test Often, Test Left
Test Early, Test Often, Test LeftTest Early, Test Often, Test Left
Test Early, Test Often, Test LeftSmartBear
 
Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys
Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys
Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys Computer Trainings Online
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Software Engineering Culture - Improve Code Quality
Software Engineering Culture - Improve Code QualitySoftware Engineering Culture - Improve Code Quality
Software Engineering Culture - Improve Code QualityDmytro Patserkovskyi
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDDKnoldus Inc.
 
Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301Amazon Web Services
 

La actualidad más candente (20)

Peer Code Review An Agile Process
Peer Code Review An Agile ProcessPeer Code Review An Agile Process
Peer Code Review An Agile Process
 
Code review
Code reviewCode review
Code review
 
Code Review
Code ReviewCode Review
Code Review
 
BDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world applicationBDD in Action – principles, practices and real-world application
BDD in Action – principles, practices and real-world application
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
Automação de teste de software
Automação de teste de softwareAutomação de teste de software
Automação de teste de software
 
A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD) A Not-So-Serious Introduction to Test Driven Development (TDD)
A Not-So-Serious Introduction to Test Driven Development (TDD)
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Behavior Driven Development Pros and Cons
Behavior Driven Development Pros and ConsBehavior Driven Development Pros and Cons
Behavior Driven Development Pros and Cons
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиков
 
Test Early, Test Often, Test Left
Test Early, Test Often, Test LeftTest Early, Test Often, Test Left
Test Early, Test Often, Test Left
 
Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys
Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys
Latest Manual Testing Interview Questions and Answers 2015 - H2kinfosys
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Software Engineering Culture - Improve Code Quality
Software Engineering Culture - Improve Code QualitySoftware Engineering Culture - Improve Code Quality
Software Engineering Culture - Improve Code Quality
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Introduction to BDD
Introduction to BDDIntroduction to BDD
Introduction to BDD
 
Test Automation
Test AutomationTest Automation
Test Automation
 
Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301Developing Connected Applications with AWS IoT - Technical 301
Developing Connected Applications with AWS IoT - Technical 301
 

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
 

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