SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
De Freddy Krueger à Brad Pitt.
Como melhorar o seu código e fazê-lo ficar lindo
Analista de Desenvolvimento no SERPRO &
ex-Analista de Infra & @rubyonrio &
@hackinrio & WTM & 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....
E os comentários????
Não use!
Palma palma palma! Não
priemos câ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
Ou seja...
Ou seja...
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 e
fracamente acopladas
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
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
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
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 o acoplamento entre os diferentes
módulos
● Aumentar o reuso de classes
Dependency Inversion
Vamos lembrar sempre
Isso são apenas boas práticas, não resolvem
todos os problemas...
anna.cruz@gmail.com
@yuizinha

Más contenido relacionado

La actualidad más candente

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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
Coding Dojo - Unreal Engine
Coding Dojo - Unreal EngineCoding Dojo - Unreal Engine
Coding Dojo - Unreal EngineAdolfo Neto
 
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
 
Coding Dojo no PUG - PE
Coding Dojo no PUG - PECoding Dojo no PUG - PE
Coding Dojo no PUG - PEBrunno Gomes
 

La actualidad más candente (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
 
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
 
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
 
Software robusto e flexível
Software robusto e flexívelSoftware robusto e flexível
Software robusto e flexível
 
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
 
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
 
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)
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Workshop android
Workshop androidWorkshop android
Workshop android
 
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
 
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
 
Cultura de testes
Cultura de testesCultura de testes
Cultura de testes
 
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?!?
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Coding Dojo - Unreal Engine
Coding Dojo - Unreal EngineCoding Dojo - Unreal Engine
Coding Dojo - Unreal Engine
 
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
 
Coding Dojo no PUG - PE
Coding Dojo no PUG - PECoding Dojo no PUG - PE
Coding Dojo no PUG - PE
 

Destacado

Certificate new1
Certificate new1Certificate new1
Certificate new1Ahmed khan
 
Compañías de internet alertan de un grave error de software que compromete la...
Compañías de internet alertan de un grave error de software que compromete la...Compañías de internet alertan de un grave error de software que compromete la...
Compañías de internet alertan de un grave error de software que compromete la...Jessika Mondragon
 
desulphator crtft
desulphator crtftdesulphator crtft
desulphator crtftYousuf Raja
 
Concurso de Ideas "Emerging Green Builders" Vancouver
Concurso de Ideas "Emerging Green Builders" VancouverConcurso de Ideas "Emerging Green Builders" Vancouver
Concurso de Ideas "Emerging Green Builders" VancouverJon Laurenz
 
Calendário de verónica moita 8 b
Calendário de verónica moita 8 bCalendário de verónica moita 8 b
Calendário de verónica moita 8 bVerónica Moita
 
Alcatel-Lucent UN322B
Alcatel-Lucent UN322BAlcatel-Lucent UN322B
Alcatel-Lucent UN322Bsavomir
 
Oxy-Jose Ludena Reference letter
Oxy-Jose Ludena Reference letterOxy-Jose Ludena Reference letter
Oxy-Jose Ludena Reference letterCARLOS GIRON
 
Baja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechado
Baja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechadoBaja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechado
Baja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechadoJonatas Ferreira
 
Consorcios y uniones temporales, definicion y obligaciones
Consorcios y uniones temporales, definicion y obligacionesConsorcios y uniones temporales, definicion y obligaciones
Consorcios y uniones temporales, definicion y obligacionesMiguel Ramírez
 
Fotografia de página completa
Fotografia de página completaFotografia de página completa
Fotografia de página completaNelson Silvestre
 
Dinero digital en Colombia, ¿Es seguro?
Dinero digital en Colombia, ¿Es seguro?Dinero digital en Colombia, ¿Es seguro?
Dinero digital en Colombia, ¿Es seguro?Miguel Ramírez
 
Cuadro de la temporalidad de un lustro
Cuadro de la temporalidad de un lustroCuadro de la temporalidad de un lustro
Cuadro de la temporalidad de un lustroMaria Moguel Herrera
 
ZombieWalk Ctba 2014
ZombieWalk Ctba 2014ZombieWalk Ctba 2014
ZombieWalk Ctba 2014HeloMiranda
 

Destacado (20)

Certificate new1
Certificate new1Certificate new1
Certificate new1
 
CV-Warut-Wongpipathpong
CV-Warut-WongpipathpongCV-Warut-Wongpipathpong
CV-Warut-Wongpipathpong
 
Trabajo práctico n°4
Trabajo práctico n°4Trabajo práctico n°4
Trabajo práctico n°4
 
Compañías de internet alertan de un grave error de software que compromete la...
Compañías de internet alertan de un grave error de software que compromete la...Compañías de internet alertan de un grave error de software que compromete la...
Compañías de internet alertan de un grave error de software que compromete la...
 
desulphator crtft
desulphator crtftdesulphator crtft
desulphator crtft
 
cafe du quai menu
cafe du quai menucafe du quai menu
cafe du quai menu
 
MS License
MS LicenseMS License
MS License
 
Concurso de Ideas "Emerging Green Builders" Vancouver
Concurso de Ideas "Emerging Green Builders" VancouverConcurso de Ideas "Emerging Green Builders" Vancouver
Concurso de Ideas "Emerging Green Builders" Vancouver
 
Calendário de verónica moita 8 b
Calendário de verónica moita 8 bCalendário de verónica moita 8 b
Calendário de verónica moita 8 b
 
NITA cert copy
NITA cert copyNITA cert copy
NITA cert copy
 
Alcatel-Lucent UN322B
Alcatel-Lucent UN322BAlcatel-Lucent UN322B
Alcatel-Lucent UN322B
 
Oxy-Jose Ludena Reference letter
Oxy-Jose Ludena Reference letterOxy-Jose Ludena Reference letter
Oxy-Jose Ludena Reference letter
 
GTA IV in GT
GTA IV in GTGTA IV in GT
GTA IV in GT
 
Baja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechado
Baja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechadoBaja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechado
Baja 2013 14._proposta_de_alteracao_rbsb_-_tubo_do_cinto_-_fechado
 
Consorcios y uniones temporales, definicion y obligaciones
Consorcios y uniones temporales, definicion y obligacionesConsorcios y uniones temporales, definicion y obligaciones
Consorcios y uniones temporales, definicion y obligaciones
 
LEAN QUALIFICATION
LEAN QUALIFICATIONLEAN QUALIFICATION
LEAN QUALIFICATION
 
Fotografia de página completa
Fotografia de página completaFotografia de página completa
Fotografia de página completa
 
Dinero digital en Colombia, ¿Es seguro?
Dinero digital en Colombia, ¿Es seguro?Dinero digital en Colombia, ¿Es seguro?
Dinero digital en Colombia, ¿Es seguro?
 
Cuadro de la temporalidad de un lustro
Cuadro de la temporalidad de un lustroCuadro de la temporalidad de un lustro
Cuadro de la temporalidad de un lustro
 
ZombieWalk Ctba 2014
ZombieWalk Ctba 2014ZombieWalk Ctba 2014
ZombieWalk Ctba 2014
 

Similar a Como melhorar o código e aplicar princípios SOLID

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
 
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
 
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
 
Orientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDOrientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDVinicius Quaiato
 
Programação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoProgramação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoSamuel David
 
Test-Driven Development - Introdução
Test-Driven Development - IntroduçãoTest-Driven Development - Introdução
Test-Driven Development - IntroduçãoHélio Costa e Silva
 
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
 
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 a Como melhorar o código e aplicar princípios SOLID (20)

Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 
Potencializando a qualidade de código
Potencializando a qualidade de códigoPotencializando a qualidade de código
Potencializando a qualidade de código
 
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?
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Apres s4
Apres s4 Apres s4
Apres s4
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLID
 
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
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Orientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLIDOrientação a Objetos - Princípios SOLID
Orientação a Objetos - Princípios SOLID
 
Programação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementadoProgramação de Elite - Requisito dado é código implementado
Programação de Elite - Requisito dado é código implementado
 
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
 
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?
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
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
 

Como melhorar o código e aplicar princípios SOLID