SlideShare uma empresa Scribd logo
Código limpo 
CLEAN CODE(ROBERT C. MARTIN) 
YASSER V. DE ANDRADE
Nomes significativos 
Nós escolhemos nomes para tudo. Então nós temos que fazer isto bem 
feito. 
O nome deve nos dizer: 
 Por que ele existe. 
 O que ele faz. 
 Como ele é usado. 
Use nomes que revelem sua intenção 
 int d; //days 
 Se um nome requer um comentário, quer dizer que ele não está 
revelando sua intenção.
Nomes significativos 
 Evite palavras que podem ser variáveis ou palavras reservadas de 
outras plataformas. 
 Evite dar nomes como “listaDePessoas”. 
 Evite usar ´L´ minúsculo ou ´o´ maiúsculo, eles parecem com 1 e 0. 
 Use nomes pronunciáveis. 
Evite usar palavras que não são palavras. 
 private String ndbofcli; 
Ao invés de.. 
 private String nameDatabaseOfClient;
Nomes significativos 
 Use nomes fáceis de procurar 
 Nomes com apenas uma letra ou números são difíceis de ser 
encontrados e entendidos dentro do código. 
 Não use trocadilhos. 
 Escreva exatamente o que você quer dizer. 
 Não use palavras apenas por “consistência”. 
 Por exemplo, não use “add” se não está realmente adicionando algo. 
 Nomes de classes devem ser substantivos e nunca devem conter 
verbos. 
 Nomes de métodos devem conter verbos. 
 Os mutators e accessors devem ser nomeados com os prefixos “get” e 
“set” de acordo com o padrão javabean.
Funções 
 O que faz uma método fácil de ler e entender? 
 Como podemos fazer com que um método transmita sua 
intenção? 
 Que atributos podemos passar para nossos métodos que permitam 
que um leitor saiba o que se passa dentro dele ? 
 Métodos e funções são a primeira linha de organização de 
qualquer programa.
Funções 
Pequenos 
 A primeira regra dos métodos e funções é que eles devem ser pequenos. 
 A segunda regra, é que eles devem ser menores ainda. 
Fazer UMA coisa 
 “Métodos e funções devem fazer apena uma coisa, 
 devem fazê-la certa e devem somente fazê-la.” 
 Tentar extrair outro método de um primeiro com o nome dizendo o que ele está 
fazendo. 
 Use nomes claros 
 Use várias palavras para que o método seja facilmente entendido e possa dizer 
o que ele realmente faz 
 Métodos devem fazer alguma coisa ou retornar alguma coisa. Mas não os dois, 
pois isso gera confusão.
Funções 
Parâmetros 
 O número ideal de parâmetros de um método ou função é zero. 
Depois vem um e dois. 
 Três deve ser evitado. Mais do que três deveter uma boa 
justificativa paratê-lo, pois não devem ser usados. 
Parâmetros do tipo boolean 
 Passar um boolean para uma função é uma terrível prática. 
 Isso complica a assinatura do método. 
 Claramente está dizendo que a função faz mais de uma coisa.
Funções 
Efeitos colaterais 
 Efeitos colaterais são mentiras. 
 Sua função dizque fará uma coisa, mas faz outras “escondidas”. 
public boolean checkPassword(String username, String password) { 
String passwordStatus = validate(password); 
if(passwordStatus.equals(“OK”)) { 
Session.initialize(); //initialize 
returntrue; 
} 
returnfalse; 
}
Formatação 
Formatação é importante, pois se trata de comunicação. 
 Comunicação é a primeira ordem para os desenvolvedores 
profissionais. 
 A legibilidade do seu código terá profundo efeito em todas as 
mudanças que serão feitas. 
 Seu estilo e disciplina sobrevive mesmo se o código original for 
alterado. 
 Vertical formating 
 Não é uma regra, mas geralmente uma classe tem 200 linhas, com 
um limite de 500 linhas. 
 Classes menores são mais fáceis de entender.
Formatação 
Uma boa identação do código ajuda a visualizar todo o escopo. 
 Identificar as situações e regras relevantes mais rápido. 
 Sempre use espaços entre operadores, parâmetros e vírgulas. 
public double(inta,intb,int c) { 
Double value=number+(123*2); 
} 
 Melhor assim... 
public double(int a, int b, int c) { 
Double value = number + (123 *2); 
}
Comentários 
 Comentários podem ser bastante úteis se colocados nos lugares 
certos. 
 Podem ser mentirosos e trazer desinformação, mesmo sem 
intenção. 
 Um dos motivos mais comuns para se escrever comentários é 
código ruim. 
 Então quando você pensar em escrever um comentário, é sinal 
que ele deve ser refatorado. 
 Goodcomments: Alguns comentários são necessários 
ou benéficos. Mas o melhor é o que você não precisa escrever.
Comentários 
 Explanationofintent: Outros fornecem a intenção por trás de uma 
decisão tomada, e não só pela informação. 
 Warningofconsequences: As vezes é útil avisar outros 
desenvolvedores sobre algumas consequências. 
 Badcomments: “Qualquer comentário que força você a olhar em 
outra parte do código para entende-lo, não vale os bits que 
consome.” 
 Redundantcomments: Não diz nada a mais que o próprio Código. 
 Misleadingcomments: Quando um desenvolvedor declara algo e 
seu comentário que não é preciso o bastante para ser exato. 
 Noisecomments: Declaram o óbvio.

Mais conteúdo relacionado

Mais procurados

Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
Valmon Gaudencio
 
Ciclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemasCiclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemas
Instituto Federal de Educação Ciencia e Tecnologia
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
Pedro De Almeida
 
Clean code
Clean codeClean code
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Adriano Teixeira de Souza
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
Ludimila Monjardim Casagrande
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
elliando dias
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
Diego Rubin
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
Leinylson Fontinele
 
Clean code
Clean codeClean code
Clean code
Henrique Smoco
 
JavaScript: Estruturas (aula 2)
JavaScript: Estruturas (aula 2)JavaScript: Estruturas (aula 2)
JavaScript: Estruturas (aula 2)
Gustavo Zimmermann
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
Daniel Brandão
 
Os 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de SoftwareOs 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de Software
Lucas Oliveira
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Ludimila Monjardim Casagrande
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
Ludimila Monjardim Casagrande
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
Bruno Catão
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
Ludimila Monjardim Casagrande
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
Antonio Oliveira
 
Arrays em java
Arrays em javaArrays em java
Arrays em java
Portal_do_Estudante_Java
 

Mais procurados (20)

Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Ciclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemasCiclo desenvolvimento de sistemas
Ciclo desenvolvimento de sistemas
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Clean code
Clean codeClean code
Clean code
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Clean code
Clean codeClean code
Clean code
 
JavaScript: Estruturas (aula 2)
JavaScript: Estruturas (aula 2)JavaScript: Estruturas (aula 2)
JavaScript: Estruturas (aula 2)
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Os 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de SoftwareOs 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de Software
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Arrays em java
Arrays em javaArrays em java
Arrays em java
 

Semelhante a Clean Code (Robert C. Martin)

Clean code
Clean codeClean code
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
Rafael Paz
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
Rogerio Fontes
 
Código limpo
Código limpoCódigo limpo
Código limpo
clauvane1708
 
Código limpo
Código limpoCódigo limpo
Código limpo
Marcio Romu
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
Evelise Vazquez
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...
Thiago Faria de Andrade
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
Juliana Fideles
 
TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!
Alison Rodrigues de Souza
 
O que é código bonito?
O que é código bonito?O que é código bonito?
O que é código bonito?
Maurício Aniche
 
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
Inael Rodrigues
 
Clean Code
Clean CodeClean Code
Clean Code
COTIC-PROEG (UFPA)
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
guestd37c23
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
Thiago Faria de Andrade
 
Gisele
GiseleGisele
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
 
Clean Code
Clean CodeClean Code
Clean Code
Daniel Tamiosso
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
Christian Cunha
 
3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)
Eugenio Caetano
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu código
Renan Carvalho
 

Semelhante a Clean Code (Robert C. Martin) (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
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Código limpo
Código limpoCódigo limpo
Código limpo
 
Código limpo
Código limpoCódigo limpo
Código limpo
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!TDD com Clean Code: Chega de amadorismo!
TDD com Clean Code: Chega de amadorismo!
 
O que é código bonito?
O que é código bonito?O que é código bonito?
O que é código bonito?
 
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
Clean CodeClean Code
Clean Code
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Gisele
GiseleGisele
Gisele
 
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.
 
Clean Code
Clean CodeClean Code
Clean Code
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
 
3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)3. ambiente de desenvolvimento do vb (parte 2)
3. ambiente de desenvolvimento do vb (parte 2)
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu código
 

Clean Code (Robert C. Martin)

  • 1. Código limpo CLEAN CODE(ROBERT C. MARTIN) YASSER V. DE ANDRADE
  • 2. Nomes significativos Nós escolhemos nomes para tudo. Então nós temos que fazer isto bem feito. O nome deve nos dizer:  Por que ele existe.  O que ele faz.  Como ele é usado. Use nomes que revelem sua intenção  int d; //days  Se um nome requer um comentário, quer dizer que ele não está revelando sua intenção.
  • 3. Nomes significativos  Evite palavras que podem ser variáveis ou palavras reservadas de outras plataformas.  Evite dar nomes como “listaDePessoas”.  Evite usar ´L´ minúsculo ou ´o´ maiúsculo, eles parecem com 1 e 0.  Use nomes pronunciáveis. Evite usar palavras que não são palavras.  private String ndbofcli; Ao invés de..  private String nameDatabaseOfClient;
  • 4. Nomes significativos  Use nomes fáceis de procurar  Nomes com apenas uma letra ou números são difíceis de ser encontrados e entendidos dentro do código.  Não use trocadilhos.  Escreva exatamente o que você quer dizer.  Não use palavras apenas por “consistência”.  Por exemplo, não use “add” se não está realmente adicionando algo.  Nomes de classes devem ser substantivos e nunca devem conter verbos.  Nomes de métodos devem conter verbos.  Os mutators e accessors devem ser nomeados com os prefixos “get” e “set” de acordo com o padrão javabean.
  • 5. Funções  O que faz uma método fácil de ler e entender?  Como podemos fazer com que um método transmita sua intenção?  Que atributos podemos passar para nossos métodos que permitam que um leitor saiba o que se passa dentro dele ?  Métodos e funções são a primeira linha de organização de qualquer programa.
  • 6. Funções Pequenos  A primeira regra dos métodos e funções é que eles devem ser pequenos.  A segunda regra, é que eles devem ser menores ainda. Fazer UMA coisa  “Métodos e funções devem fazer apena uma coisa,  devem fazê-la certa e devem somente fazê-la.”  Tentar extrair outro método de um primeiro com o nome dizendo o que ele está fazendo.  Use nomes claros  Use várias palavras para que o método seja facilmente entendido e possa dizer o que ele realmente faz  Métodos devem fazer alguma coisa ou retornar alguma coisa. Mas não os dois, pois isso gera confusão.
  • 7. Funções Parâmetros  O número ideal de parâmetros de um método ou função é zero. Depois vem um e dois.  Três deve ser evitado. Mais do que três deveter uma boa justificativa paratê-lo, pois não devem ser usados. Parâmetros do tipo boolean  Passar um boolean para uma função é uma terrível prática.  Isso complica a assinatura do método.  Claramente está dizendo que a função faz mais de uma coisa.
  • 8. Funções Efeitos colaterais  Efeitos colaterais são mentiras.  Sua função dizque fará uma coisa, mas faz outras “escondidas”. public boolean checkPassword(String username, String password) { String passwordStatus = validate(password); if(passwordStatus.equals(“OK”)) { Session.initialize(); //initialize returntrue; } returnfalse; }
  • 9. Formatação Formatação é importante, pois se trata de comunicação.  Comunicação é a primeira ordem para os desenvolvedores profissionais.  A legibilidade do seu código terá profundo efeito em todas as mudanças que serão feitas.  Seu estilo e disciplina sobrevive mesmo se o código original for alterado.  Vertical formating  Não é uma regra, mas geralmente uma classe tem 200 linhas, com um limite de 500 linhas.  Classes menores são mais fáceis de entender.
  • 10. Formatação Uma boa identação do código ajuda a visualizar todo o escopo.  Identificar as situações e regras relevantes mais rápido.  Sempre use espaços entre operadores, parâmetros e vírgulas. public double(inta,intb,int c) { Double value=number+(123*2); }  Melhor assim... public double(int a, int b, int c) { Double value = number + (123 *2); }
  • 11. Comentários  Comentários podem ser bastante úteis se colocados nos lugares certos.  Podem ser mentirosos e trazer desinformação, mesmo sem intenção.  Um dos motivos mais comuns para se escrever comentários é código ruim.  Então quando você pensar em escrever um comentário, é sinal que ele deve ser refatorado.  Goodcomments: Alguns comentários são necessários ou benéficos. Mas o melhor é o que você não precisa escrever.
  • 12. Comentários  Explanationofintent: Outros fornecem a intenção por trás de uma decisão tomada, e não só pela informação.  Warningofconsequences: As vezes é útil avisar outros desenvolvedores sobre algumas consequências.  Badcomments: “Qualquer comentário que força você a olhar em outra parte do código para entende-lo, não vale os bits que consome.”  Redundantcomments: Não diz nada a mais que o próprio Código.  Misleadingcomments: Quando um desenvolvedor declara algo e seu comentário que não é preciso o bastante para ser exato.  Noisecomments: Declaram o óbvio.