[MÚSICA] [MÚSICA]
Então vamos começar a nossa refatoração da classe Customer.
No vídeo anterior eu expliquei para vocês como que isso tudo aqui funcionava,
não é, nós passamos aqui pelos testes,
rodamos eles aqui, para ver que está tudo funcionando bem direitinho,
e vamos começar aqui a refatorar a classe Customer, está?
De cara a gente olha aqui e pensa "Onde eu começo?
Por onde eu começo isso aqui?".
Está?
Bom, de cara eu já vejo aqui switch/case, não é,
onde ele basicamente está calculando, não é,
quanto que custa a locação, não é?
Eu vejo que ele está, ele cria aqui essa variável thisAmount,
não é, e depois essa variável, ela é usada para,
a gente pode ver aqui que o Eclipse faz highlighting para a gente,
ele cria essa variável aqui cima, não é, e depois, baseado aqui no filme,
ele depois soma, não é, esse thisAmount aqui no total.
Ele imprime e soma.
está, então eu vou começar extraindo esse pedacinho aqui, está?
Então eu vou vir aqui e vou extrair método.
Está?
Nessa, dei uma pausa aqui para falar.
Mas assim, nessa aula a gente vai ver pouquinho também,
né, das ferramentas que o Eclipse dá para a gente para fazer a refatoração.
Então a gente vai ver que nem tudo, né, muitas vezes a gente precisa de vários
passos, né, de refatorações aqui do Eclipse, alguns passos manuais,
a gente vai ver que nem sempre a refatoração que ele faz é exatamente
aquela que a gente precisa mas com certeza ajuda bastante.
Então eu vou estar mostrando aqui, vou estar utilizando, então, também serve como
uma forma de você conhecer pouquinho mais as refatorações aqui do Eclipse.
Bom, então eu vou vir aqui nesse pedaço e vou extrair o método.
Está?
Ele vai me perguntar aqui qual que seria o nome do método; eu vou dizer aqui,
eu vou seguir a mesma nomenclatura que está sendo utilizada, né,
vou chamar de "getAmount", tem "u" aqui, e vou dar o "OK".
Está?
Será que continua funcionando aqui, roda?
Continua.
Está?
Então, que é que vai acontecer?
Ele pega esse "thisAmount" aqui que tá 0, né, e atribui e passa ele como parâmetro.
Ele sempre vai passar 0.
Então esse "thisAmount" aqui, ele não precisa ser passado como parâmetro.
Está?
E aqui ele vai virar é uma variável do meu método.
Está?
Então, "double thisAmount = 0",
ele vai receber ali "Rental", Está correto,
e aí no final ele retorna o "thisAmount".
Está?
Então, eu vou rodar aqui o teste para ver se está
tudo funcionando ainda, opa, beleza!
Bom, já consegui dar uma reduzida aqui no statement e consegui separar a lógica
para calcular o quanto custa cada tipo de filme ali.
Está?
Vamos ver aqui agora, se a gente olhar ele fala assim,
olha: "determinar os 'amounts' para cada linha".
Isso daqui, eu acho que não precisa mais, né?
Já não é mais necessário esse comentário,
porque agora isso que era pedação agora é uma linha só.
Então esse comentário não é mais necessário.
Está? Então eu posso excluir isso daqui, está?
Se eu olhar aqui esse, essa variável aqui,
eu vou perceber que o, eu não precisaria dessas duas linhas, né?
Eu posso simplesmente passar a declaração dessa variável aqui para baixo,
né, e eliminar aqui cima que ficaria código mais simples.
Está?
Então, eu salvo aqui,
sempre rodando os testes para ver se eu não fiz nenhuma besteira, né?
OK.
O que eu fiz aqui para recuperar os para separar,
né, esse cálculo aqui dos "amounts", né,
eu posso fazer também, né, para o cálculo do "frequentRenterPoints".
Está?
Então, se eu olhar, é basicamente o que calcula é esse pedaço aqui,
então, oh: adiciona o "frequentRenterPoints" e adiciona
o bônus se forem para dois dias, né, com o "NEW_RELEASE".
Então eu vou marcar essa parte aqui responsável pelo cálculo, né,
dos "frequentRenterPoints" e vou extrair aqui o método, né.
Vou vir "Refactor", "Extract method",
então eu vou chamar aqui de "getFrequent RenterPoints".
Então, OK.
Ele tem mais ou menos aquela mesma ideia ali,
né, que ele também passa como parâmetro, será que dá certo aqui?
Eu vou rodar, Está?
Aqui, olha o que que ele tá fazendo, olha como é que é estranho, né: ele tem aqui
esse "frequentRenterPoints" que seria o total de pontos, está?
E aí aqui, ele está pegando esse total, quando ele dá o "get",
ele passa a quantidade que ele tem, aqui eu vou somar e
vou retornar essa a quantidade já somada.
Está? Então eu também vou modificar isso,
apesar de eu rodar aqui e está funcionando,
porque não é uma forma legal de fazer isso.
Né, então ao invés de fazer isso,
eu vou fazer aqui, eu quero que o "frequentRenterPoints", eu faço aqui,
mais igual e eu pego quantos "renter points" é para aquela locação.
Não passar valor para ele somar e me retornar o valor somado,
que isso aí seria código mais confuso, né?
Então eu vou vir aqui, vou pegar essa definição de inteiro,
que eu vou precisar dessa variável, só não preciso que ela seja parâmetro,
e vou inicializar ela aqui com o valor 1, porque eu sempre somo 1, né?
O "renter points", ele sempre começa com 1.
Então, ele verifica aqui, se eu já posso tirar aquilo, né,
porque agora o meu método ficou bem mais simples,
então não preciso mais também de tantos comentários, né?
Ele está verificando aqui se o "priceCode" é "NEW_RELEASE", quantidade de dias é
maior do que 1, né, e eu somo 1 aqui no "frequentRenterPoints" e retorno.
Está?
E aqui eu estou somando.
Vamos ver se funcionou essa minha nova abordagem aqui?
Está?
Então eu rodo.
Perfeito.
Poderia inclusive, até, simplificar muito mais, né, isso daqui, né?
Então ele vai verificar, se é "NEW_RELEASE" e os dias
são maiores que 1, "return 2".
Senão, "return 1".
Faltou ponto e vírgula ali.
Eu nem preciso, na verdade, dessa variável aqui.
Está?
Muito, muito mais simples.
Tem que funcionar, né?
Vamos ver, rodou, funcionou, está?
Então aos pouquinhos eu vou simplificando aqui o meu código.
Está? Olha aqui,
o meu statement já cabe na minha tela!
Isso para mim é parâmetro importante, está?
O método, para mim, não pode ser maior do que o que cabe na minha tela.
Está? Está certo que antigamente eu usava ali
monitor de 17 polegadas para caber bastante coisa,
mas hoje dia eu tenho o meu pequenininho aqui e tem que caber na tela mesmo.
Está? Bom, com isso a gente começa aqui a nossa
refatoração, tá, já extraindo aqui alguns métodos,
e a gente pode ver aqui, que esse
método aqui não tem muito a ver com a classe "Customer".
Tanto esse quanto esse.
Está?
Só que essa continuação aí vai ficar para o nosso próximo vídeo, aí, na sequência.
Muito obrigado por assistir, espero você no próximo.
[MÚSICA]