SlideShare uma empresa Scribd logo
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
1fabiosilvalima.net
CYCLOMATIC
COMPLEXITY
W O R K S H O P C L U S T E R R E P L Y – A G O S T O / 2 0 1 7
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
2fabiosilvalima.net
PERFIL
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
3fabiosilvalima.net
O INSTRUTOR
C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
4fabiosilvalima.net
+11 99953-3415
+11 3665-1500
contato@fabiosilvalima.net
Hello World!
Me chamo Fabio Silva Lima e trabalho
como Arquiteto de Soluções na Broker
Consultoria, possuo mais de 17 anos de
experiência em desenvolvimento de
software.
"Fazer parte de uma equipe que melhore
a vida das pessoas".
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
5fabiosilvalima.net
eBook DESIGN PATTERNS Vol. 1
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
6fabiosilvalima.net
eBook DESIGN PATTERNS Vol. 1
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
7fabiosilvalima.net
AGENDA
C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
8fabiosilvalima.net
Parte 2
• Perfil
• Apresentação
• Definição
• Code Metrics
• Code Analysis
• Demo
• Refactoring
• Design Patterns
• Resumo
• Perguntas
AGENDA
Parte 1
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
9fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
10fabiosilvalima.net
DEFINIÇÃO
C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
11fabiosilvalima.net
Cyclomatic Complexity é uma métrica criada por Thomas
J. McCabe em 1976 para medir um código fonte e saber
quão complexo ele é.
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
12fabiosilvalima.net
IF/ELSE SWITCH/CASE
FOR/WHILEFOREACH
EXPRESSION
?
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
13fabiosilvalima.net
50
10
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
14fabiosilvalima.net
Tabela da métrica Cyclomatic Complexity
White Box Testing Blog
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
15fabiosilvalima.net
MAS ENTÃO...
O QUE É UM CÓDIGO
COMPLEXO PARA VOCÊ?
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
16fabiosilvalima.net
LINHAS
IF/SWITCH ENCADEADOS NÃO TESTÁVEL
DEPENDÊNCAS
MUITA RESPONSABILIDADE NÃO REUTILIZÁVEL
NOMENCLATURA ?
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
17fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
18fabiosilvalima.net
CODE METRICS
C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
19fabiosilvalima.net
Code Metrics é uma série de métricas que ajudam o
desenvolvedor a identificar complexidade e riscos em
todo o ciclo de vida de um software.
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
20fabiosilvalima.net
Cyclomatic Complexity Maintainability Index
Depth of Inheritance Class Coupling
Lines of Code
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
21fabiosilvalima.net
Code Metrics Results
Visual Studio 2017
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
22fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
23fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
24fabiosilvalima.net
Code Metrics NÃO resolve
os problemas do seu código.
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
25fabiosilvalima.net
MAS ENTÃO...
QUEM IRÁ RESOLVER?
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
26fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
27fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
28fabiosilvalima.net
REFACTORING
C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
29fabiosilvalima.net
“Qualquer bobo consegue escrever código que um
computador entende. Bons programadores
escrevem códigos que humanos conseguem entender.”
Martin Fowler
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
30fabiosilvalima.net
Arquitetura
Boas Práticas
Design Patterns
Conhecimento
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
31fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
32fabiosilvalima.net
1 – Reduzir Cyclomatic Complexity.
2 – Reduzir Lines of Code.
3 – Aumentar Maintainbility.
4 – Usar Boas Práticas e seguir Guidelines.
5 – Aplicar Design Patterns.
6 – Ser Reutilizável e Testável.
Objetivos
Refactoring
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
33fabiosilvalima.net
1 - ANÁLISE
2 - PLANEJAMENTO
3 - EXECUÇÃO
4 - REVISÃO
Etapas
Refactoring
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
34fabiosilvalima.net
try DRY
but KISS
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
35fabiosilvalima.net
Single Responsibility
KISSDRY
Factory
Inversion of Control Adapter
Decorator
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
36fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
37fabiosilvalima.net
RESUMO
C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
38fabiosilvalima.net
Usamos Design Patterns de Inversion of Control,
Dependency Injection, Factory, Adapter e Decorator.
E também usamos alguns princípios de boas práticas
como KISS, DRY e Single Responsibility.
Resumo
Refactoring e Cyclomatic Complexity
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
39fabiosilvalima.net
BE COOL!
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
40fabiosilvalima.net
PROGRAMAÇÃO NO MUNDO REAL
C O N S U L T O R I A - D E S E N V O L V I M E N T O
41fabiosilvalima.net
+11 99953-3415
+11 3665-1500
contato@fabiosilvalima.net
OBRIGADO!
“Me contate quando der alguma rosca ou
se nem mesmo o chinesinho resolver"

Mais conteúdo relacionado

PPTX
Metodologia SCRUM AGILE + VSTS + GIT
PPTX
E se joseph climber fosse cientista de dados v2
PDF
OKTA 2017 - Descontruindo a Filosofia Ágil
PDF
Cidade para Pessoas Projeto de Urbanismo Visando a Caminhabilidade na R. 25 d...
PDF
Transformação Digital Encontro Nacional de Secretariado
PPTX
Nova Metragem / Ag²
PDF
Application insights + ASP.NET Core
PPTX
Mobile Commerce
Metodologia SCRUM AGILE + VSTS + GIT
E se joseph climber fosse cientista de dados v2
OKTA 2017 - Descontruindo a Filosofia Ágil
Cidade para Pessoas Projeto de Urbanismo Visando a Caminhabilidade na R. 25 d...
Transformação Digital Encontro Nacional de Secretariado
Nova Metragem / Ag²
Application insights + ASP.NET Core
Mobile Commerce

Semelhante a Cyclomatic Complexity no C# (20)

PDF
5 passos para não fracassar nos anúncios do facebook
PDF
[Web br 2016] Construindo a Experiência Juntos
PDF
PDF
Product Inception: aplicando Design Thinking em um framework Agile
PDF
Instrumentos para medição de ultra baixa corrente e decodificação serial
PDF
Catalogue d_vox_2020
PDF
Apresentação Cidade Mooca Vila Sardenha.pdf
PDF
Práticas do Agile Testing
PDF
Portfolio marcelo freitas
PDF
Abertura CTE Engenharia encontro de gestores
PDF
Aplicações no Contexto de Big Data
PDF
Git e Gitlab por Samir C Costa Iplanfor
PDF
Empreendimentos industriais
PPTX
Pitch deck InCam
PDF
Inventta+ where innovation lives
PPTX
Distribuição de probabilidades e detecção de outliers
PDF
Collision Conference - 23 Maio 2019
PDF
test psychotechnique 2024 ONDA préparation
PPTX
Cleaner-Code-CentralIT-2015
PDF
Tarifação de energia elétrica
5 passos para não fracassar nos anúncios do facebook
[Web br 2016] Construindo a Experiência Juntos
Product Inception: aplicando Design Thinking em um framework Agile
Instrumentos para medição de ultra baixa corrente e decodificação serial
Catalogue d_vox_2020
Apresentação Cidade Mooca Vila Sardenha.pdf
Práticas do Agile Testing
Portfolio marcelo freitas
Abertura CTE Engenharia encontro de gestores
Aplicações no Contexto de Big Data
Git e Gitlab por Samir C Costa Iplanfor
Empreendimentos industriais
Pitch deck InCam
Inventta+ where innovation lives
Distribuição de probabilidades e detecção de outliers
Collision Conference - 23 Maio 2019
test psychotechnique 2024 ONDA préparation
Cleaner-Code-CentralIT-2015
Tarifação de energia elétrica
Anúncio

Último (7)

PDF
apresentacao introducao computacao ead.pdf
PPTX
Curso de Windows 11 resumido na prática.pptx
PPTX
Mapeamento de Objeto para Tabela Relacional
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PDF
Evolução em código: algoritmos genéticos com PHP
apresentacao introducao computacao ead.pdf
Curso de Windows 11 resumido na prática.pptx
Mapeamento de Objeto para Tabela Relacional
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Dos requisitos ao código: como criar código rastreável em PHP
Evolução em código: algoritmos genéticos com PHP
Anúncio

Cyclomatic Complexity no C#

  • 1. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 1fabiosilvalima.net CYCLOMATIC COMPLEXITY W O R K S H O P C L U S T E R R E P L Y – A G O S T O / 2 0 1 7
  • 2. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 2fabiosilvalima.net PERFIL
  • 3. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 3fabiosilvalima.net O INSTRUTOR C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
  • 4. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 4fabiosilvalima.net +11 99953-3415 +11 3665-1500 contato@fabiosilvalima.net Hello World! Me chamo Fabio Silva Lima e trabalho como Arquiteto de Soluções na Broker Consultoria, possuo mais de 17 anos de experiência em desenvolvimento de software. "Fazer parte de uma equipe que melhore a vida das pessoas".
  • 5. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 5fabiosilvalima.net eBook DESIGN PATTERNS Vol. 1
  • 6. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 6fabiosilvalima.net eBook DESIGN PATTERNS Vol. 1
  • 7. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 7fabiosilvalima.net AGENDA C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
  • 8. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 8fabiosilvalima.net Parte 2 • Perfil • Apresentação • Definição • Code Metrics • Code Analysis • Demo • Refactoring • Design Patterns • Resumo • Perguntas AGENDA Parte 1
  • 9. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 9fabiosilvalima.net
  • 10. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 10fabiosilvalima.net DEFINIÇÃO C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
  • 11. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 11fabiosilvalima.net Cyclomatic Complexity é uma métrica criada por Thomas J. McCabe em 1976 para medir um código fonte e saber quão complexo ele é.
  • 12. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 12fabiosilvalima.net IF/ELSE SWITCH/CASE FOR/WHILEFOREACH EXPRESSION ?
  • 13. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 13fabiosilvalima.net 50 10
  • 14. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 14fabiosilvalima.net Tabela da métrica Cyclomatic Complexity White Box Testing Blog
  • 15. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 15fabiosilvalima.net MAS ENTÃO... O QUE É UM CÓDIGO COMPLEXO PARA VOCÊ?
  • 16. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 16fabiosilvalima.net LINHAS IF/SWITCH ENCADEADOS NÃO TESTÁVEL DEPENDÊNCAS MUITA RESPONSABILIDADE NÃO REUTILIZÁVEL NOMENCLATURA ?
  • 17. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 17fabiosilvalima.net
  • 18. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 18fabiosilvalima.net CODE METRICS C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
  • 19. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 19fabiosilvalima.net Code Metrics é uma série de métricas que ajudam o desenvolvedor a identificar complexidade e riscos em todo o ciclo de vida de um software.
  • 20. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 20fabiosilvalima.net Cyclomatic Complexity Maintainability Index Depth of Inheritance Class Coupling Lines of Code
  • 21. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 21fabiosilvalima.net Code Metrics Results Visual Studio 2017
  • 22. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 22fabiosilvalima.net
  • 23. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 23fabiosilvalima.net
  • 24. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 24fabiosilvalima.net Code Metrics NÃO resolve os problemas do seu código.
  • 25. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 25fabiosilvalima.net MAS ENTÃO... QUEM IRÁ RESOLVER?
  • 26. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 26fabiosilvalima.net
  • 27. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 27fabiosilvalima.net
  • 28. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 28fabiosilvalima.net REFACTORING C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
  • 29. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 29fabiosilvalima.net “Qualquer bobo consegue escrever código que um computador entende. Bons programadores escrevem códigos que humanos conseguem entender.” Martin Fowler
  • 30. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 30fabiosilvalima.net Arquitetura Boas Práticas Design Patterns Conhecimento
  • 31. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 31fabiosilvalima.net
  • 32. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 32fabiosilvalima.net 1 – Reduzir Cyclomatic Complexity. 2 – Reduzir Lines of Code. 3 – Aumentar Maintainbility. 4 – Usar Boas Práticas e seguir Guidelines. 5 – Aplicar Design Patterns. 6 – Ser Reutilizável e Testável. Objetivos Refactoring
  • 33. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 33fabiosilvalima.net 1 - ANÁLISE 2 - PLANEJAMENTO 3 - EXECUÇÃO 4 - REVISÃO Etapas Refactoring
  • 34. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 34fabiosilvalima.net try DRY but KISS
  • 35. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 35fabiosilvalima.net Single Responsibility KISSDRY Factory Inversion of Control Adapter Decorator
  • 36. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 36fabiosilvalima.net
  • 37. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 37fabiosilvalima.net RESUMO C Y C L O M A T I C C O M P L E X I T Y – A G O S T O / 2 0 1 7
  • 38. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 38fabiosilvalima.net Usamos Design Patterns de Inversion of Control, Dependency Injection, Factory, Adapter e Decorator. E também usamos alguns princípios de boas práticas como KISS, DRY e Single Responsibility. Resumo Refactoring e Cyclomatic Complexity
  • 39. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 39fabiosilvalima.net BE COOL!
  • 40. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 40fabiosilvalima.net
  • 41. PROGRAMAÇÃO NO MUNDO REAL C O N S U L T O R I A - D E S E N V O L V I M E N T O 41fabiosilvalima.net +11 99953-3415 +11 3665-1500 contato@fabiosilvalima.net OBRIGADO! “Me contate quando der alguma rosca ou se nem mesmo o chinesinho resolver"