SlideShare a Scribd company logo
1 of 38
Download to read offline
De Freddy Krueger à Brad Pitt.
Como melhorar o seu código e fazê-lo ficar lindo
Analista de Desenvolvimento & ex-Infra
(fora do SERPRO) & @rubyonrio & curiosa
& hiperativa & tentando dominar o mundo
Quem sou eu?
O que vamos ver?
• SOLID (Boas práticas)
• Código Limpo
O que vamos ver?
• SOLID (Boas práticas)
• Código Limpo
Tá mas porque isso é
importante?
● Mais fácil para compreender
● Mais fácil de encontrar e resolver bugs
Ou seja, melhora (e muito) a MANTENABILIDADE
do código
O que contribui para um código
feio?
Eu quero é terminar rápido!!!
Pra que fazer direito? Tô de saco cheio desse
projeto já!
Tenho que começar a fazer agora!!!
Depois refatoro!
Todo mundo faz assim!!!
O que contribui para um código
feio?
Eu quero é terminar rápido!!!
Pra que fazer direito? Tô de saco cheio desse
projeto já!
Tenho que começar a fazer agora!!!
Depois refatoro!
Todo mundo faz assim!!!
Porque o código continua feio?
● Desenvolvedores saem do projeto
● Novos desenvolvedores entram no projeto e
tem medo de modificar algo
● Mito de que demora muito mais tempo
O poder de mudar isso é nosso!
Respire fundo e....
Sobre o uso de comentários:
Não use!
Sobre o uso de comentários:
Não use!
Calma calma calma! Não criemos
pânico!!!
O código deve ser o máximo possível
auto-explicativo
Comentários podem e devem ser
usados, mas principalmente nas
seguintes condições:
● Se não dá pra fazer nada melhor.
● Para alertar sobre algo importante sobre
aquele trecho de código.
● TODO / FIXME
S
O
L
I
D
ingle Responsibility
pen-Closed
iskov Substitution
nterface Segregation
ependency Inversion
Single Responsibility
Cada classe ou método deve ter apenas uma
responsabilidade, ou seja, mudar por apenas
um motivo
Single Responsibility
Cada classe ou método deve ter apenas uma
responsabilidade, ou seja, mudar por apenas
um motivo
Objetivo:
● Classes ou métodos
pequenas e coesas
Single Responsibility
Single Responsibility
Open-Closed
As classes devem ser abertas para extensão,
mas fechadas para modificação.
Open-Closed
As classes devem ser abertas para extensão,
mas fechadas para modificação.
Objetivos:
● Evolução do código mais fácil e rápida
● Melhorar a testabilidade
Open-Closed
Open-Closed
Liskov Substitution
Uma classe pode ser substituída por uma
classe derivada dela sem a alteração de
funcionamento de um método.
Liskov Substitution
Uma classe pode ser substituída por uma
classe derivada dela sem a alteração de
funcionamento de um método.
Objetivos:
● Reaproveitamento de código mais eficiente
● Melhorar a testabilidade
Liskov Substitution
Liskov Substitution
Interface Segregation
O cliente de uma classe não deve ser
obrigado a herdar métodos que ele não
utiliza.
Interface Segregation
O cliente de uma classe não deve ser
obrigado a herdar métodos que ele não
utiliza.
Objetivo:
● Interfaces menores, mais coesas e mais
estáveis
Interface Segregation
Interface Segregation
Dependency Inversion
Módulos de alto nível não devem depender de
módulos de baixo nível e sim de abstrações e
estas não devem depender de detalhes e sim
os detalhes dependerem delas.
Dependency Inversion
Módulos de alto nível não devem depender de
módulos de baixo nível e sim de abstrações e
estas não devem depender de detalhes e sim
os detalhes dependerem delas.
Objetivos:
● Diminuir a coesão entre os diferentes
módulos
● Aumentar o reuso de classes
Dependency Inversion
Dependency Inversion
Anna Cruz
anna-graciela.cruz@serpro.gov.br
#7705
DE706
Códigos em
https://github.com/annacruz/exemplos-devday-serpro

More Related Content

What's hot

Testes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e BlazemeterTestes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e BlazemeterElias Nogueira
 
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Rogerio Prado de Jesus
 
Programe na Velocidade da Luz
Programe na Velocidade da LuzPrograme na Velocidade da Luz
Programe na Velocidade da LuzDaniel Polito
 
Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020Wagner Mendes Voltz Fusca
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeKamilla Queiroz Xavier
 
Como continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemia
Como continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemiaComo continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemia
Como continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemiaSavanna Denega
 
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-source
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-sourceDa Integração Contínua à Entrega Contínua apenas com ferramentas open-source
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-sourceRaphael Paiva
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasGabriel Schade Cardoso
 
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)Igor Abade
 
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?tdc-globalcode
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDJony Ferreira dos Santos
 
Coding Dojo no PUG - PE
Coding Dojo no PUG - PECoding Dojo no PUG - PE
Coding Dojo no PUG - PEBrunno Gomes
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 

What's hot (20)

Testes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e BlazemeterTestes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e Blazemeter
 
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
Be Happy With Semantic Versioning And Git Flow - PHP Conference Brasil 2012
 
Programe na Velocidade da Luz
Programe na Velocidade da LuzPrograme na Velocidade da Luz
Programe na Velocidade da Luz
 
Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020Você não faz qualidade em Software - TDC Florianópolis 2020
Você não faz qualidade em Software - TDC Florianópolis 2020
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
DojoTuba: Coding Dojo - Tubarão, SC
DojoTuba: Coding Dojo - Tubarão, SCDojoTuba: Coding Dojo - Tubarão, SC
DojoTuba: Coding Dojo - Tubarão, SC
 
Como continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemia
Como continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemiaComo continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemia
Como continuar aprendendo sobre Robótica, STEAM e Tecnologias durante a pandemia
 
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-source
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-sourceDa Integração Contínua à Entrega Contínua apenas com ferramentas open-source
Da Integração Contínua à Entrega Contínua apenas com ferramentas open-source
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 
Workshop android
Workshop androidWorkshop android
Workshop android
 
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
Testes exploratórios não são sinônimo de bagunça! (TDC 2016 SP)
 
Software robusto e flexível
Software robusto e flexívelSoftware robusto e flexível
Software robusto e flexível
 
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
TDC2016POA | Trilha Ruby - Hora da aventura! Vamos melhorar seu código?!?
 
Boas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDDBoas práticas no desenvolvimento de software através do uso de TDD
Boas práticas no desenvolvimento de software através do uso de TDD
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Coding Dojo no PUG - PE
Coding Dojo no PUG - PECoding Dojo no PUG - PE
Coding Dojo no PUG - PE
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 

Similar to Melhorar código com SOLID e limpeza

TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesSandro Giacomozzi
 
Agilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC FlorianópolisAgilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC FlorianópolisWagner Mendes Voltz Fusca
 
TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?
TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?
TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?tdc-globalcode
 
como esta a arquitetura do seu app?
como esta a arquitetura do seu app?como esta a arquitetura do seu app?
como esta a arquitetura do seu app?tdc-globalcode
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDHélio Medeiros
 
Clean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofiaClean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofiaAugusto Rosa
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - IntroduçãoHélio Costa e Silva
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss DanielChristofolli
 

Similar to Melhorar código com SOLID e limpeza (20)

Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
 
Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 
O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Agilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC FlorianópolisAgilidade é para desenvolvedores? TDC Florianópolis
Agilidade é para desenvolvedores? TDC Florianópolis
 
TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?
TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?
TDC2018FLN | Trilha Agile - Agilidade e para desenvolvedores?
 
Apres s4
Apres s4 Apres s4
Apres s4
 
como esta a arquitetura do seu app?
como esta a arquitetura do seu app?como esta a arquitetura do seu app?
como esta a arquitetura do seu app?
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLID
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 
Clean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofiaClean Code - Conceitos e filosofia
Clean Code - Conceitos e filosofia
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - Introdução
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 

Melhorar código com SOLID e limpeza