SlideShare uma empresa Scribd logo
1 de 99
Baixar para ler offline
Clean Code Matters!
Porque 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!"
var contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
func incrementaContador() {
contador++ //Incrementa o contador.
}
//func helloWorld() {
// print("Hello World!")
//}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
var contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
func incrementaContador() {
contador++ //Incrementa o contador.
}
//func helloWorld() {
// print("Hello World!")
//}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
var contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
func incrementaContador() {
contador++ //Incrementa o contador.
}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
var contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
func incrementaContador() {
contador++ //Incrementa o contador.
}
// ---------------------------------------------------
// VARIAVEIS
// ---------------------------------------------------
let message = "Hello World!"
var contador = 0
// ---------------------------------------------------
// FUNCOES
// ---------------------------------------------------
func incrementaContador() {
contador++ //Incrementa o contador.
}
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++ //Incrementa o contador.
}
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++ //Incrementa o contador.
}
//func helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++ //Incrementa o contador.
}
//func helloWorld() {
// print("Hello World!")
//}
et message = "Hello World!"
ar contador = 0
unc incrementaContador() {
contador++ //Incrementa o contador.
/func helloWorld() {
/ print("Hello World!")
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++ //Incrementa o contador.
}
//func helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++
}
//func helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++
}
//func helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++
}
//func helloWorld() {
// print("Hello World!")
//}
let message = "Hello World!"
var contador = 0
func incrementaContador() {
contador++
}
1# Evite códigos e
comentários inúteis
func authUsuario() { … }
func usuarioAprovado() {
let a = "Parabéns"
…
}
func authUsuario() { … }
func usuarioAprovado() {
let a = "Parabéns"
…
}
func autenticaLoginUsuario() { … }
func usuarioAprovado() {
let a = "Parabéns"
…
}
func autenticaLoginUsuario() { … }
func usuarioAprovado() {
let a = "Parabéns"
…
}
func autenticaLoginUsuario() { … }
func usuarioAprovado() {
let a = "Parabéns"
…
}
func autenticaLoginUsuario() { … }
func usuarioAprovado() {
let a = "Parabéns"
…
}
func aaautenticaaaLoginUsuaaario()
{ … }
func usuaaarioaaaprovaaado() {
let aaa = "Paaaraaabéns"
…
}
func aaautenticaaaLoginUsuaaario()
{ … }
func usuaaarioaaaprovaaado() {
let aaa = "Paaaraaabéns"
…
}
func autenticaLoginUsuario() { … }
func usuarioAprovado() {
let a = "Parabéns"
…
}
func autenticaLoginUsuario() { … }
func usuarioAprovado() {
let mensagemDeBoasVindas
= "Parabéns"
…
}
func autenticaLoginUsuario() { … }
func 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) { … }
func () {
}
if (idade > 18
&& !faturaPendente) { … }
func () {
}
if (idade > 18
&& !faturaPendente) { … }
func () -> Bool {
}
if (idade > 18
&& !faturaPendente) { … }
func () -> Bool {
}
if (idade > 18
&& !faturaPendente) { … }
func (_ idade: Int,
_ faturaPendente: Bool) -> Bool {
}
if (idade > 18
&& !faturaPendente) { … }
func (_ idade: Int,
_ faturaPendente: Bool) -> Bool {
}
if (idade > 18
&& !faturaPendente) { … }
func (_ idade: Int,
_ faturaPendente: Bool) -> Bool {
}
if (idade > 18
&& !faturaPendente) { … }
func (_ idade: Int,
_ faturaPendente: Bool) -> Bool {
return idade > 18
&& !faturaPendente
}
if () { … }
func isUsuarioValido(_ idade: Int,
_ faturaPendente: Bool) -> Bool {
return idade > 18
&& !faturaPendente
}
if () { … }
func isUsuarioValido(_ idade: Int,
_ faturaPendente: Bool) -> Bool {
return idade > 18
&& !faturaPendente
}
if (isUsuarioValido(idade,
faturaPendente)) { … }
func isUsuarioValido(_ idade: Int,
_ faturaPendente: Bool) -> Bool {
return idade > 18
&& !faturaPendente
}
if (isUsuarioValido(idade,
faturaPendente)) { … }
4# Encapsule
condicionais
dentro funções
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
let numeroAntesDoCinco = 4
let capitalDoParana = "Curitiba"
...
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
pacote.frete = Correios.frete(
pacote.endereco, endereco)
return pacote.frete
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(endereco: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(origem: Endereco),
destino: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(origem: Endereco),
destino: Endereco) -> Double {
return Correios.frete(pacote.endereco, endereco)
}
let pacote = Pacote( … )
func calculaFrete(origem: Endereco),
destino: Endereco) -> Double {
return Correios.frete(origem, destino)
}
let pacote = Pacote( … )
func calculaFrete(origem: Endereco),
destino: Endereco) -> Double {
return Correios.frete(origem, destino)
}
5# Evite efeitos
colaterais
Desconto Especial:
COMERCIAL@TRIADWORKS.COM.BR
com o assunto AHEAD20CE
20% de desconto no curso de TDD

Mais conteúdo relacionado

Mais procurados

Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBRodrigo Hjort
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Luis Gustavo Almeida
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3garux
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em PythonRicardo Paiva
 
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!	TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática! tdc-globalcode
 
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto AlegreJava 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto AlegreFrederico Maia Arantes
 
J query javascript para seres humanos
J query   javascript para seres humanosJ query   javascript para seres humanos
J query javascript para seres humanosnobios
 

Mais procurados (15)

Python Class
Python ClassPython Class
Python Class
 
Php curl - Coleta de dados na web
Php curl - Coleta de dados na webPhp curl - Coleta de dados na web
Php curl - Coleta de dados na web
 
Palestra de PDO
Palestra de PDOPalestra de PDO
Palestra de PDO
 
09 formulas locaiscursogxxbr
09 formulas locaiscursogxxbr09 formulas locaiscursogxxbr
09 formulas locaiscursogxxbr
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
Python 05
Python 05Python 05
Python 05
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em Python
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!	TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
TDC2016POA | Trilha Java - Atualizando para Java 8 na prática!
 
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto AlegreJava 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
Java 8 - Afinal onde usamos no dia a dia? TDC 2015 - Porto Alegre
 
J query javascript para seres humanos
J query   javascript para seres humanosJ query   javascript para seres humanos
J query javascript para seres humanos
 
Python 04
Python 04Python 04
Python 04
 

Semelhante a Clean Code Matters!

Minicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRMinicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRLucas Antonio Ramos Sartori
 
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
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de ProgramaçãoCarlos Schults
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
 
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
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-Cosmarcf
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinNelson Glauber Leal
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoFabricio NErdmann
 
Programação em Python_6.pptx
Programação em Python_6.pptxProgramação em Python_6.pptx
Programação em Python_6.pptxzarusca
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2michellobo
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 

Semelhante a Clean Code Matters! (20)

Kotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSLKotlin no desenvolvimento Mobile - FTSL
Kotlin no desenvolvimento Mobile - FTSL
 
Minicurso kotlin UTFPR
Minicurso kotlin UTFPR Minicurso kotlin UTFPR
Minicurso kotlin UTFPR
 
Minicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRMinicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPR
 
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)
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de Programação
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object Calisthenics
 
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
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com Kotlin
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding Dojo
 
Falando "Postgrês"
Falando "Postgrês"Falando "Postgrês"
Falando "Postgrês"
 
Programação em Python_6.pptx
Programação em Python_6.pptxProgramação em Python_6.pptx
Programação em Python_6.pptx
 
Refactoring like a boss
Refactoring like a bossRefactoring like a boss
Refactoring like a boss
 
iOS 8 com swift
iOS 8 com swiftiOS 8 com swift
iOS 8 com swift
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 

Clean Code Matters!