clean code
TRANSCRIPT
Clean CodeMarcos Brizeno
Quem sou eu.
@marcosbrizeno
brizeno.wordpress.com
Motivao
Gambiarras
Sujeira?
Produtividade
Custo para mudar
Profissional?
O que ?
Legibilidade
Elegante
Eficiente
Qualidade de cdigo
Qual Sua Reao?
Qual Sua Reao?
Falar fcil!
Refatore!
Praticando
Nomes
Revele sua inteno
Revele sua inteno
double calcula(double d1, double d2);
int main() {
double prProd = 17.99;double desc = 0.2;
double valor = calcula(prProd, desc);cout 5;}public:double calcularValorCorrida() {if (!ehHorarioNormal()) {return quilometros * PRECO_BANDEIRA_2;}return quilometros * PRECO_BANDEIRA_1;}};
Estruturas de Deciso
#define PRECO_BANDEIRA_2 3.7#define PRECO_BANDEIRA_1 2.9
class Taxi {protected:int horaDaCorrida;double quilometros;private:bool ehHorarioNormal() {return horaDaCorrida < 22 && horaDaCorrida > 5;}public:double calcularValorCorrida() {if (ehHorarioNormal()) {return quilometros * PRECO_BANDEIRA_1;}return quilometros * PRECO_BANDEIRA_2;}};
Retornar nulo
Retornar nulo
public double dividir(int dividendo, int divisor) {if (divisor == 0) {return -1;}return dividendo / divisor;}
Retornar nulo
public double dividir(int dividendo, int divisor) {if (divisor == 0) {return -1;}return dividendo / divisor;}
public double dividir(int dividendo, int divisor) throws Exception {if (divisor == 0) {throw new Exception("Impossvel dividir por zero");}return dividendo / divisor;}
Formatao
Formatao
public String getTabuleiro() {String string = "";for (int i = 0; i < getAltura(); i++) {for (int j = 0; j < getLargura(); j++) {string += tabuleiroEscondido[i][j];}if (i != tabuleiroEscondido.length - 1) {string += "\n";} }return string;}
Formatao
public String getTabuleiro() {String string = "";for (int i = 0; i < getAltura(); i++) {for (int j = 0; j < getLargura(); j++) {string += tabuleiroEscondido[i][j];}if (i != tabuleiroEscondido.length - 1) {string += "\n";}}return string;}
Repetio
Repetio
public void venderProduto(Vendedor vendedor, Produto produto) {// Verifica se o produto tem descontofor (Produto produtosComDesconto : ProdutosComDesconto) {if (produtosComDesconto.getId() == produto.getId()) {// Calcula o valor com descontodouble valorFinal = produto.getPreco() - produto.getPreco()* VALOR_DESCONTO;// Cria o boleto de pagamentoBoleto boletoDePagamento = new Boleto();boletoDePagamento.setNomeVendedor(vendedor.getNome());boletoDePagamento.setValor(valorFinal);boletoDePagamento.imprimir();}}// Se o produto no tiver desconto// Cria o boleto de pagamentoBoleto boletoDePagamento = new Boleto();boletoDePagamento.setNomeVendedor(vendedor.getNome());boletoDePagamento.setValor(produto.getValor());boletoDePagamento.imprimir();}
Repetio
public class Imagem {
public void moverImagem(int x, int y){this.imagem.getRetangulo().getPontoX().set(x);this.imagem.getRetangulo().getPontoY().set(y);}
}
Repetio
public class Imagem {
public void moverImagem(int x, int y){this.imagem.getRetangulo().getPontoX().set(x);this.imagem.getRetangulo().getPontoY().set(y);}
}
Repetio
public class Imagem {
public void moverImagem(int x, int y){this.imagem.getRetangulo().getPontoX().set(x);this.imagem.getRetangulo().getPontoY().set(y);}
}
public class Imagem {
public void moverImagem(int x, int y){this.imagem.getRetangulo().mover(x, y);}
}
Bad Smell
Bad Smell
Cdigo duplicado!
Mtodos longos = muita responsabilidade!
Muitos argumentos so sintomas de muitas responsabilidades!
Argumento booleano grita que a funo faz mais de uma coisa!
Sentiu vontade de comentar? Refatore e depois comente!
Se vai comentar, comenta DIREITO!
! Clean Code
! Clean Code
Clean Code no sobre:Linguagem
Paradigma
Convenes de Cdigo
! Clean Code
Clean Code no sobre:Linguagem
Paradigma
Convenes de Cdigo
TROLAGEM!
Sobre o livro
Robert C. Martin
Bons programadores
Voc est lendo este livro por dois motivos. Primeiro, voc um programador. Segundo, voc quer ser um programador melhor. Bom. Precisamos de melhores programadores.
H Vagas!
H Vagas!
H Vagas!
Praticar preciso
Aprender a escrever um cdigo limpo uma tarefa difcil. Requer mais que conhecimento sobre princpios e padres. Voc precisa suar. Voc precisa praticar e ver suas falhas.
Prximos passos
Prximos passos
Estudar sobre Refatorao!
Praticar!
Estudar sobre Padres de Projeto!
Praticar!
Estudar sobre Princpios de Design OO!
Praticar!
Estudar sobre TDD!
Praticar!
Melhorar cada vez mais e mais
Melhorar cada vez mais e mais
Obrigado!
@marcosbrizeno
brizeno.wordpress.com