SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Agenda
● Motivação
● Nomes significativos
● Funções
● Comentários
● Formatação
● Tratamento de exceção
● Testes de unidade
Era uma vez em 1980...
● Maiores intervalos entre lançamentos
● Bugs não eram corrigidos
● Cada vez mais travamentos
Alguns anos depois...
O custo de ter um código confuso
Por que não fazer de novo?
Afinal somos melhores do
que quando começamos
Sem comentários
Escolhendo nomes significativos
Um bom nome precisa responder 3 perguntas:
1. Por que existe?
2. O que faz?
3. Como é usado?
Use nomes que revelem seu proposito
Cuidado para não passar informações erradas!
Evite nomes sem significado
Outro exemplo
Use palavras pronunciáveis
Notação Húngara
Notação Húngara
Funções
Funções devem ser:
● Pequenas
● Fazer apenas uma coisa
● Ser bem nomeadas
● Devem ser lidas de cima para baixo
● Extrair trechos para funções menores
● DRY
Cuidado com a quantidade de parâmetros
Qual é a
quantidade ideal
de parâmetros?
ZERO
Mônades
● Geralmente perguntam ou transformam algo
● Evitar retornos void
● Evitar parâmetros lógicos
Díades
● Sempre tentar transformá-la em mônade
● Parâmetros deve fazer parte do mesmo
valor
● Cuidar a ordem dos parâmetros
Tríades
Problemas:
+ pausa
+ ignoração
+ dificuldade de manter a ordem
Comentários
Comentários geralmente:
● Mentem
● Desatualizam
● Imprecisos
Porque o código muda!
Porque o código muda!
Porque o código muda!
Uso de comentários
● Esclarecimento
● Alerta de consequência
● JavaDoc em API pública
● Comentário legal
● TODO
● Redundantes
● Longos
● HTML
● Explicando código
● Ao lados de cada chave
● JavaDoc em API NÃO
pública
● Código comentado
Formatação
Alguns cuidados:
● Manter o código bem identado
● Distância vertical
● Função dependente
● Linha de no máximo 120 caracteres
● Classes devem tem o minimo de linhas
possível
Tratamento de exceções
Exceções
● Usar exceções em vez de retornar código de erro
● Não pode obscurecer a lógica
● Criar testes que forcem a exceção
● Use exceções não verificadas
● Lance exceções com um contexto
Não retorne NULL
Não retorne NULL
Diminui o número de NullPointerException
Não passe NULL
Testes de Unidade
As 3 leis do TDD
● Você não pode escrever código de produção a menos que ele
tenha um teste de unidade que falha.
● Você não pode escrever mais teste de unidade que o suficiente
para falhar; e erros de compilação são falhas.
● Você não pode escrever mais que o suficiente, para o código de
produção passar em um teste de unidade.
Vantagens
● flexibilidade
● código limpo
● passível de mudanças
● feedback
● segurança
● maior produtividade
Testes = Código
Classes
Como elas devem ser?
● Possuir nomes descritivos
● Pequenas
● SRP
● Alta coesão
O que é SRP?
O que é alta coesão?
Boas práticas de programação orientada a objetos

Mais conteúdo relacionado

Mais procurados

Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean CodeAndré Leoni
 
Clean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoClean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoTiago Bencardino
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Yasser Veleda
 
JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutórialucasleite
 
Reaproveitamento de código com Generics
Reaproveitamento de código com GenericsReaproveitamento de código com Generics
Reaproveitamento de código com GenericsCristiano Agosti
 
Apresentação BDD
Apresentação BDDApresentação BDD
Apresentação BDDTiago Link
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensivaKayo Rayner
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#Gustavo Bellini Bigardi
 
Refatoração básica e obrigatória
Refatoração básica e obrigatóriaRefatoração básica e obrigatória
Refatoração básica e obrigatóriadtelaroli
 

Mais procurados (17)

Apresentação Clean Code
Apresentação Clean CodeApresentação Clean Code
Apresentação Clean Code
 
Clean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpoClean code - Mantenha seu código limpo
Clean code - Mantenha seu código limpo
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)
 
JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutória
 
Reaproveitamento de código com Generics
Reaproveitamento de código com GenericsReaproveitamento de código com Generics
Reaproveitamento de código com Generics
 
Clean Code
Clean CodeClean Code
Clean Code
 
Apresentação BDD
Apresentação BDDApresentação BDD
Apresentação BDD
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensiva
 
Clean code
Clean codeClean code
Clean code
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#
 
Php Para Iniciantes
Php Para IniciantesPhp Para Iniciantes
Php Para Iniciantes
 
Refatoração básica e obrigatória
Refatoração básica e obrigatóriaRefatoração básica e obrigatória
Refatoração básica e obrigatória
 

Destaque

Desenvolvimento Orgânico de Software com User Stories
Desenvolvimento Orgânico de Software com User StoriesDesenvolvimento Orgânico de Software com User Stories
Desenvolvimento Orgânico de Software com User StoriesDionatan default
 
Workshop de Requisitos - User Story Mapping
Workshop de Requisitos - User Story MappingWorkshop de Requisitos - User Story Mapping
Workshop de Requisitos - User Story MappingMarcelo Neves
 
MTA2 - Fatiando o produto com User Story Mapping
MTA2 - Fatiando o produto com User Story MappingMTA2 - Fatiando o produto com User Story Mapping
MTA2 - Fatiando o produto com User Story MappingMarcello Cardoso
 
Feijoada Verbal - Pequenas historias V1
Feijoada Verbal - Pequenas historias V1Feijoada Verbal - Pequenas historias V1
Feijoada Verbal - Pequenas historias V1Emerson Silva
 

Destaque (6)

User stories
User storiesUser stories
User stories
 
Desenvolvimento Orgânico de Software com User Stories
Desenvolvimento Orgânico de Software com User StoriesDesenvolvimento Orgânico de Software com User Stories
Desenvolvimento Orgânico de Software com User Stories
 
Agile - User Stories
Agile - User StoriesAgile - User Stories
Agile - User Stories
 
Workshop de Requisitos - User Story Mapping
Workshop de Requisitos - User Story MappingWorkshop de Requisitos - User Story Mapping
Workshop de Requisitos - User Story Mapping
 
MTA2 - Fatiando o produto com User Story Mapping
MTA2 - Fatiando o produto com User Story MappingMTA2 - Fatiando o produto com User Story Mapping
MTA2 - Fatiando o produto com User Story Mapping
 
Feijoada Verbal - Pequenas historias V1
Feijoada Verbal - Pequenas historias V1Feijoada Verbal - Pequenas historias V1
Feijoada Verbal - Pequenas historias V1
 

Semelhante a Boas práticas de programação orientada a objetos

Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTiago Link
 
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Pedro Edson Silva Barros
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atechcesarcneto
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 
Código limpo: Comentários
Código limpo:   ComentáriosCódigo limpo:   Comentários
Código limpo: ComentáriosInael Rodrigues
 
Clean code 101 do caos ao nirvana em poucos passos
Clean code 101  do caos ao nirvana em poucos passosClean code 101  do caos ao nirvana em poucos passos
Clean code 101 do caos ao nirvana em poucos passosGabrielly Gomes
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedoresguitoper
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaRogerio Fontes
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3Inael Rodrigues
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 

Semelhante a Boas práticas de programação orientada a objetos (20)

Clean code
Clean codeClean code
Clean code
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Teste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste vocêTeste sua aplicação antes que ela teste você
Teste sua aplicação antes que ela teste você
 
Clean Code
Clean CodeClean Code
Clean Code
 
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.Código limpo: Boas práticas e sua importância no desenvolvimento de software.
Código limpo: Boas práticas e sua importância no desenvolvimento de software.
 
Treinamento TDD - Atech
Treinamento TDD - AtechTreinamento TDD - Atech
Treinamento TDD - Atech
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Código limpo: Comentários
Código limpo:   ComentáriosCódigo limpo:   Comentários
Código limpo: Comentários
 
Gisele
GiseleGisele
Gisele
 
Clean code 101 do caos ao nirvana em poucos passos
Clean code 101  do caos ao nirvana em poucos passosClean code 101  do caos ao nirvana em poucos passos
Clean code 101 do caos ao nirvana em poucos passos
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
Mantendo o código saudável
Mantendo o código saudávelMantendo o código saudável
Mantendo o código saudável
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Princípios Básicos para Desenvolvedores
Princípios Básicos para DesenvolvedoresPrincípios Básicos para Desenvolvedores
Princípios Básicos para Desenvolvedores
 
Sobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis UberlândiaSobre TDD - Tech Friday da Everis Uberlândia
Sobre TDD - Tech Friday da Everis Uberlândia
 
Cultura de testes
Cultura de testesCultura de testes
Cultura de testes
 
Código limpo: Funções Capítulo 3
Código limpo: Funções  Capítulo 3Código limpo: Funções  Capítulo 3
Código limpo: Funções Capítulo 3
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Clean code part 2
Clean code   part 2Clean code   part 2
Clean code part 2
 

Mais de Marcelo Serpa

Web 3.0 - The Future of Web
Web 3.0 - The Future of WebWeb 3.0 - The Future of Web
Web 3.0 - The Future of WebMarcelo Serpa
 
Frontend Track NodeJS
Frontend Track NodeJSFrontend Track NodeJS
Frontend Track NodeJSMarcelo Serpa
 
Defenda seus consumidores
Defenda seus consumidoresDefenda seus consumidores
Defenda seus consumidoresMarcelo Serpa
 
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring CloudService discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring CloudMarcelo Serpa
 
Acessando apis com feign e hystrix
Acessando apis com feign e hystrixAcessando apis com feign e hystrix
Acessando apis com feign e hystrixMarcelo Serpa
 
No core do node js - entendendo como a plataforma trabalha
No core do node js  - entendendo como a plataforma trabalhaNo core do node js  - entendendo como a plataforma trabalha
No core do node js - entendendo como a plataforma trabalhaMarcelo Serpa
 
Componentizacao com ReactJs
Componentizacao com ReactJsComponentizacao com ReactJs
Componentizacao com ReactJsMarcelo Serpa
 

Mais de Marcelo Serpa (13)

AWS Organizations
AWS OrganizationsAWS Organizations
AWS Organizations
 
Web 3.0 - The Future of Web
Web 3.0 - The Future of WebWeb 3.0 - The Future of Web
Web 3.0 - The Future of Web
 
Frontend Track NodeJS
Frontend Track NodeJSFrontend Track NodeJS
Frontend Track NodeJS
 
Netty training
Netty trainingNetty training
Netty training
 
Terraform
TerraformTerraform
Terraform
 
Cqrs
CqrsCqrs
Cqrs
 
Microservices
MicroservicesMicroservices
Microservices
 
Caching
CachingCaching
Caching
 
Defenda seus consumidores
Defenda seus consumidoresDefenda seus consumidores
Defenda seus consumidores
 
Service discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring CloudService discovery with Eureka and Spring Cloud
Service discovery with Eureka and Spring Cloud
 
Acessando apis com feign e hystrix
Acessando apis com feign e hystrixAcessando apis com feign e hystrix
Acessando apis com feign e hystrix
 
No core do node js - entendendo como a plataforma trabalha
No core do node js  - entendendo como a plataforma trabalhaNo core do node js  - entendendo como a plataforma trabalha
No core do node js - entendendo como a plataforma trabalha
 
Componentizacao com ReactJs
Componentizacao com ReactJsComponentizacao com ReactJs
Componentizacao com ReactJs
 

Boas práticas de programação orientada a objetos