clean code

Download Clean code

If you can't read please download the document

Upload: marcos-brizeno

Post on 16-Apr-2017

567 views

Category:

Education


1 download

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