SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
Código Limpo
Wesley Fuchter
Use nomes significativos.
- Use convenções: Classe = Substantivo; Função = Verbo (infinitivo).
- Nome de função devem falar o que a mesma faz.
- Não há limites de caracteres para os nomes.
- Nomes de atributos devem representar a característica para que ele foi
criado.
Comente o necessário. Tenha poucas
necessidades.
- Evite comentário para explicar código. Para isso, escreva o código de
forma legível.
- Comente a motivação do código.
- Mantenha o comentário atualizado.
- Se for comentar, escreva bem.
- Não comente código. Exclua-o.
Formate o código. Tome cuidado com a
aerodinâmica.
- Formate o código conforme convenções.
- Tome cuidado com o nível de entrada do seu código.
Alta aerodinâmica pode ser resultado de muitas
responsabilidades.
Uma função, uma responsabilidade.
- Funções devem fazer bem apenas uma coisa.
- Funções devem receber poucos parâmetros.
- Parâmetros são para entrada - não para a saída.
- Evite parâmetros lógicos. Normalmente são usados para dar duas responsabilidades para a
função.
- Busque reúso.
- Não retorne null.
- Escreva testes de unidade. Escreva unidades testáveis.
Classes: responsabilidades pequenas.
- Classes devem ser coesas.
- Devem representar uma real entidade do domínio;
- Encapsule suas características. Exponha seus comportamentos.
- Mantenha o acesso mais restrito possível.
- Estabeleça pré e pós condições aos comportamentos. Encapsule-as.
- Conheça os estados do objeto. Controle suas mudanças.
- Delegue complexidade de criação.
Princípio: Don't repeat yourself.
- Códigos duplicados = metade da manutenibilidade.
- Busque coesão da função/classe.
- Evite múltiplas responsabilidades.
- Duplicou, realize a extração.
Pense em coesão. Evite o acoplamento.
- Demeter Law - Não converse com estranhos.
- Use composição.
- Receba as dependências, não as crie.
- Dependa de entidades mais estáveis que você.
- Inversão de Controle e injeção de dependências.
Use herança. Abstraia comportamentos.
- Prefira polimorfismo. Evite condicionais.
- Entenda a regra: “é um” / “é uma”.
- Feche para alteração, abra para extensão.
- Aperte as pré condições. Afrouxe as pós condições.
Próximos passos:
- Orientação a Objetos - de verdade.
- Princípios SOLID.
- Design Patterns - (GoF, J2EE, etc…).
- Livros:
- Refactoring - Martin Fowler;
- Domain Driven Design - Eric Evans;
- Working Effectively With Legacy Code - Michael Feathers;
- Test Driven Development - Kent Beck;
Obrigado.

Mais conteúdo relacionado

Semelhante a Código Limpo

Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Yasser Veleda
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e EstrategiasEduardo Mendes
 
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
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2Inael Rodrigues
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoAlberto Monteiro
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfAndreCosta502039
 
Refatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoRefatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoJuciellen Cabrera
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 

Semelhante a Código Limpo (20)

Clean Code
Clean CodeClean Code
Clean Code
 
Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)Clean Code (Robert C. Martin)
Clean Code (Robert C. Martin)
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e Estrategias
 
Qualidade no desenvolvimento de sistemas
Qualidade no desenvolvimento de sistemasQualidade no desenvolvimento de sistemas
Qualidade no desenvolvimento de sistemas
 
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
 
Codigo limpo: Nomes Significativos Cap 2
Codigo limpo:  Nomes Significativos Cap 2Codigo limpo:  Nomes Significativos Cap 2
Codigo limpo: Nomes Significativos Cap 2
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Clean code
Clean codeClean code
Clean code
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objeto
 
Code Smells
Code SmellsCode Smells
Code Smells
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 
Refatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoRefatoração - aquela caprichada no código
Refatoração - aquela caprichada no código
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Refatoração
RefatoraçãoRefatoração
Refatoração
 
Strategy pattern
Strategy patternStrategy pattern
Strategy pattern
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Shell script
Shell script Shell script
Shell script
 

Último

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx2m Assessoria
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASMarcio Venturelli
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx2m Assessoria
 

Último (8)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 

Código Limpo

  • 2. Use nomes significativos. - Use convenções: Classe = Substantivo; Função = Verbo (infinitivo). - Nome de função devem falar o que a mesma faz. - Não há limites de caracteres para os nomes. - Nomes de atributos devem representar a característica para que ele foi criado.
  • 3. Comente o necessário. Tenha poucas necessidades. - Evite comentário para explicar código. Para isso, escreva o código de forma legível. - Comente a motivação do código. - Mantenha o comentário atualizado. - Se for comentar, escreva bem. - Não comente código. Exclua-o.
  • 4. Formate o código. Tome cuidado com a aerodinâmica. - Formate o código conforme convenções. - Tome cuidado com o nível de entrada do seu código. Alta aerodinâmica pode ser resultado de muitas responsabilidades.
  • 5. Uma função, uma responsabilidade. - Funções devem fazer bem apenas uma coisa. - Funções devem receber poucos parâmetros. - Parâmetros são para entrada - não para a saída. - Evite parâmetros lógicos. Normalmente são usados para dar duas responsabilidades para a função. - Busque reúso. - Não retorne null. - Escreva testes de unidade. Escreva unidades testáveis.
  • 6. Classes: responsabilidades pequenas. - Classes devem ser coesas. - Devem representar uma real entidade do domínio; - Encapsule suas características. Exponha seus comportamentos. - Mantenha o acesso mais restrito possível. - Estabeleça pré e pós condições aos comportamentos. Encapsule-as. - Conheça os estados do objeto. Controle suas mudanças. - Delegue complexidade de criação.
  • 7. Princípio: Don't repeat yourself. - Códigos duplicados = metade da manutenibilidade. - Busque coesão da função/classe. - Evite múltiplas responsabilidades. - Duplicou, realize a extração.
  • 8. Pense em coesão. Evite o acoplamento. - Demeter Law - Não converse com estranhos. - Use composição. - Receba as dependências, não as crie. - Dependa de entidades mais estáveis que você. - Inversão de Controle e injeção de dependências.
  • 9. Use herança. Abstraia comportamentos. - Prefira polimorfismo. Evite condicionais. - Entenda a regra: “é um” / “é uma”. - Feche para alteração, abra para extensão. - Aperte as pré condições. Afrouxe as pós condições.
  • 10. Próximos passos: - Orientação a Objetos - de verdade. - Princípios SOLID. - Design Patterns - (GoF, J2EE, etc…). - Livros: - Refactoring - Martin Fowler; - Domain Driven Design - Eric Evans; - Working Effectively With Legacy Code - Michael Feathers; - Test Driven Development - Kent Beck;