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

Clean Code Matters!