SlideShare uma empresa Scribd logo
1 de 99
Baixar para ler offline
Clean Code Matters!
Por que Clean Code importa e 5 dicas para melhorar
seu código.
Kewerson Hugo
@kewersonhugo
O que é
Clean Code?
Fácil de
ler
Fácil de
entender
Fácil de
manter
Comunicação e
expressão
Menos
ambiguidade
Workflow
Interação entre
objetos
Propósito de
existir
Mas por quê
importa?
Nós lemos mais
do que
escrevemos
Outros irão ler
seu código
Código não é
abandonado
O mais difícil é
manter
Aumenta a
confiança
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
let contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
function incrementaContador() {
contador++ //Incrementa o contador.
}
//function helloWorld() {
// print("Hello World!")
//}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
let contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
function incrementaContador() {
contador++ //Incrementa o contador.
}
//function helloWorld() {
// print("Hello World!")
//}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
let contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
function incrementaContador() {
contador++ //Incrementa o contador.
}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
let contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
function incrementaContador() {
contador++ //Incrementa o contador.
}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
let contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
function incrementaContador() {
contador++ //Incrementa o contador.
}
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++ //Incrementa o contador.
}
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++ //Incrementa o contador.
}
//function helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++ //Incrementa o contador.
}
//function helloWorld() {
// print("Hello World!")
//}
et message = "Hello World!"
et contador = 0
unction incrementaContador() {
contador++ //Incrementa o contador.
/function helloWorld() {
/ print("Hello World!")
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++ //Incrementa o contador.
}
//function helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++
}
//function helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++
}
//function helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++
}
//function helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
let contador = 0
function incrementaContador() {
contador++
}
1# Evite códigos e
comentários inúteis
function authUsuario() {…}
function usuarioAprovado() {
let a = "Parabéns"
…
}
function authUsuario() {…}
function usuarioAprovado() {
let a = "Parabéns"
…
}
function autenticaLoginUsuario() {…}
function usuarioAprovado() {
let a = "Parabéns"
…
}
function autenticaLoginUsuario() {…}
function usuarioAprovado() {
let a = "Parabéns"
…
}
function autenticaLoginUsuario() {…}
function usuarioAprovado() {
let a = "Parabéns"
…
}
function autenticaLoginUsuario() {…}
function usuarioAprovado() {
let a = "Parabéns"
…
}
function aaautenticaaaLoginUsuaaario()
{…}
function usuaaarioaaaprovaaado() {
let aaa = "Paaaraaabéns"
…
}
function aaautenticaaaLoginUsuaaario()
{…}
function usuaaarioaaaprovaaado() {
let aaa = "Paaaraaabéns"
…
}
function autenticaLoginUsuario() {…}
function usuarioAprovado() {
let a = "Parabéns"
…
}
function autenticaLoginUsuario() {…}
function usuarioAprovado() {
let mensagemDeBoasVindas
= "Parabéns"
…
}
function autenticaLoginUsuario() {…}
function usuarioAprovado() {
let mensagemDeBoasVindas
= "Parabéns"
…
}
2# Use nomes
descritivos
let ddmmyyyyStr
= formataDataAtual("dd-MM-yyyy")
let ddmmyyyyStr
= formataDataAtual("dd-MM-yyyy")
let ddmmyyyyStr
= formataDataAtual("dd-MM-yyyy")
let dataAtualCompleta
= formataDataAtual("dd-MM-yyyy")
let dataAtualCompleta
= formataDataAtual("dd-MM-yyyy")
3# Use nomes
pronunciáveis
if (idade > 18) {
if (!faturaPendente) { … }
}
if (idade > 18) {
if (!faturaPendente) {
if (condicao3) {
if (condicao4) {
if (condicao5) { … }
}
}
}
}
if (idade > 18) {
if (!faturaPendente) {
if (condicao3) {
if (condicao4) {
if (condicao5) { … }
}
}
}
}
if (idade > 18) {
if (!faturaPendente) { … }
}
if (idade > 18
&& !faturaPendente) { … }
if (idade > 18
&& !faturaPendente) { … }
if (idade > 18
&& !faturaPendente) { … }
if (idade > 18
&& !faturaPendente
&& condicao3
&& condicao4
&& condicao5
&& condicao6) { … }
if (idade > 18
&& !faturaPendente
&& condicao3
&& condicao4
&& condicao5
&& condicao6) { … }
NO
if (idade > 18
&& !faturaPendente) { … }
function () {
}
if (idade > 18
&& !faturaPendente) { … }
function () {
}
if (idade > 18
&& !faturaPendente) { … }
function (idade, faturaPendente) {
}
if (idade > 18
&& !faturaPendente) { … }
function (idade, faturaPendente) {
}
if (idade > 18
&& !faturaPendente) { … }
function (idade, faturaPendente) {
return idade > 18
&& !faturaPendente
}
if () { … }
function isUsuarioValido(idade,
faturaPendente) {
return idade > 18
&& !faturaPendente
}
if () { … }
function isUsuarioValido(idade,
faturaPendente) {
return idade > 18
&& !faturaPendente
}
if (isUsuarioValido(idade,
faturamentendete)) { … }
function isUsuarioValido(idade,
faturaPendente) {
return idade > 18
&& !faturaPendente
}
if (isUsuarioValido(idade,
faturamentendete)) { … }
4# Encapsule
condicionais
dentro funções
let pacote = Pacote( … )
function calculaFrete(endereco) {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
let numeroAntesDoCinco = 4
let capitalDoParana = "Curitiba"
...
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(endereco) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(origem, destino) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(origem, destino) {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
function calculaFrete(origem, destino) {
return Correios.frete(origem, destino)
}
let pacote = Pacote( … )
function calculaFrete(origem, destino) {
return Correios.frete(origem, destino)
}
5# Evite efeitos
colaterais
Clean Code 5 dicas
Clean Code 5 dicas

Mais conteúdo relacionado

Semelhante a Clean Code 5 dicas

Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formulariosguestd9e271
 
aula09-redux-firebase-auth.pdf
aula09-redux-firebase-auth.pdfaula09-redux-firebase-auth.pdf
aula09-redux-firebase-auth.pdfBrunoTorres978388
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebBruno Borges
 
Qualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código LimpoQualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código LimpoLidiane Taquehara
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02thomasdacosta
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Bruno Borges
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-Cosmarcf
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Android Dev Conference 2017 - Arquitetura para projetos Android
 Android Dev Conference 2017 - Arquitetura para projetos Android Android Dev Conference 2017 - Arquitetura para projetos Android
Android Dev Conference 2017 - Arquitetura para projetos AndroidiMasters
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresFernando Franquini
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 

Semelhante a Clean Code 5 dicas (20)

Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Javascript Recuperando Dados De Formularios
Javascript    Recuperando Dados De FormulariosJavascript    Recuperando Dados De Formularios
Javascript Recuperando Dados De Formularios
 
aula09-redux-firebase-auth.pdf
aula09-redux-firebase-auth.pdfaula09-redux-firebase-auth.pdf
aula09-redux-firebase-auth.pdf
 
Relatório
RelatórioRelatório
Relatório
 
Java mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento WebJava mais ágil que nunca no desenvolvimento Web
Java mais ágil que nunca no desenvolvimento Web
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Qualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código LimpoQualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código Limpo
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
 
Kotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSLKotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSL
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Android Dev Conference 2017 - Arquitetura para projetos Android
 Android Dev Conference 2017 - Arquitetura para projetos Android Android Dev Conference 2017 - Arquitetura para projetos Android
Android Dev Conference 2017 - Arquitetura para projetos Android
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para DesenvolvedoresTDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
TDC2016 Boas Práticas SQL em Banco Relacional para Desenvolvedores
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Falando "Postgrês"
Falando "Postgrês"Falando "Postgrês"
Falando "Postgrês"
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 

Clean Code 5 dicas