[MÚSICA]
Olá.
Bem vindo ao curso sobre TDD.
Nós vamos dar continuidade ao exame do código que tem múltiplos maus cheiros.
Essa é a segunda parte da vídeo aula que mostra
os maus cheiros até o segundo tipo de mau cheiro, nós tínhamos que examinar 5 tipos.
É o que nós estamos vendo agora nessa transparência aqui, tá certo.
Os 5 tipos de maus cheiros, que nós havíamos então identificados.
Nós agora vamos tratar dos maus cheiros de 1 e 2,
noutra parte nós iremos tratar do restante.
O mau cheiro 1, se refere aos nomes inapropriados.
Uma coisa importante que nós temos que ver que
aquela expressão da intenção ela fica expressa nos nomes,
tanto das variáveis, quer sejam variáveis de instância ou variáveis temporárias,
ou argumentos de métodos ou de construtores,
nomes de classes, nomes de interfaces.
Isso é muito importante.
Então é uma coisa realmente que vai ter uma importância fundamental para o seu
código ficar mais claro, mais compreensível, tá certo.
Então, no caso aqui, para nomes inapropriados,
nós vamos usar uma técnica simples, que no caso,
como estamos trabalhando com variáveis, nós vamos usar o Rename Variables.
Renomear as variáveis.
Tá certo?
Nós vamos acoplar também como as 3 variáveis,
elas de fato são variáveis de instância,
na área de refatoração costuma-se, muitos lugares,
convenciona-se identificar as variáveis de instância,
diferenciar das outras variáveis temporárias, por exemplo.
Então, uma técnica muito usada é colocar
prefixo antes do nome da variável que é o underline ou sublinhado.
Tá certo?
E é isso que nós vamos fazer.
Então, ou seja, ao colocar os nomes apropriados,
nós vamos renomear colocando os nomes que realmente expressem a intenção.
E, normalmente essa intenção ela aparece no comentário muitas vezes que está do
lado, tá certo?
Mesmo quando não tem comentário naquilo que eu estou querendo representar no meu
código, né, eu vou expressar isso na variável, tá certo?
O nome da variável.
Então aqui eu antes de pedir para vocês pararem vídeo, tá certo.
Eu vou dizer que o certo seria fazer para cada refatoração que eu uso
rename variables, eu deveria testar a minha bateria, tá certo?
Para ver se eu não substituí errado.
Como nós vamos usar isso de uma maneira automática através do eclipse
ou de qualquer ambiente da linguagem Java.
A chance de cometer erro nesse caso é mínima, tá certo?
Então, nós vamos renomear todas as 3 variáveis, né, tá certo?
Vamos dar nomes apropriados que expressem a intenção delas e vamos colocar
o prefixo, tá certo, antes do nome nós vamos colocar o underline, tá certo?
Para isso nós só vamos fazer teste, então é ciclo, né.
No ciclo de refatoração é ciclo só que eu vou fazer.
Eu venho, troco todos os nomes das variáveis,
coloco nomes mais apropriados e testo uma vez, tá certo?
Só para garantir.
Então, vocês vejam aí, os nomes que eu escolhi aí são bem apropriados.
O age que português seria de idade, né, tá certo.
O que estou querendo dizer ali é o limite de uma idade que pode ser idoso
ou abaixo do idoso, no inglês é o sênior, certo?
Então, eu estou colocando sênior.
Estou fazendo isso para as outras todas, né.
tá certo.
Eu estou colocando, eu olho qual é o comentário e consigo, então,
colocar nome apropriado.
Esses comentários eles já podem desaparecer se eu quiser,
eu vou deixá-los ainda por certo tempo porque eu vou tratar primeiro
o próximo mau cheiro sobre as boolenas negativas.
Como essas variáveis todas são booleanas, tá certo, convenciona-se também,
usar o is ou é se fosse falar português, tá certo, que ajuda a fazer a leitura.
Então vocês percebam que eu posso ler if não é sênior, if não é,
not is already subsidized, ou seja, fica muito mais claro.
A última que eu estou substituindo ela ficou muito mais clara,
porque vez de eu dizer que era not not full time, o not full time eu substituí
por part time, se ele não é tempo integral, ele é tempo parcial,
Então ficou not is part time, ficou muito mais claro para mim isso.
Então, agora eu gostaria que vocês apenas 20 segundos respondessem à pergunta.
Vocês parem o vídeo e podem dar continuidade depois de 20 segundos que
a gente continua aqui.
[SEM_ÁUDIO] Bom, vocês agora devem ter tido mais facilidade para acertar, né.
tá certo.
Principalmente nesse código que a parte else não está muito longe, né, tá certo.
Então fica muito mais fácil de descobrir.
Junto com o comentário fica mais fácil.
Mas ainda assim dá certo trabalho de entender por causa do problema do not,
tá certo.
Então, nós conseguimos com isso, usando nomes apropriados,
expressar a intenção de uma maneira mais adequada, tá certo?
Vamos passar agora para tratar o mau cheiro 2.
Os ifs com expressões booleanas negativas.
Como eu disse, o ser humano, o cérebro do ser humano não sabe tratar a negativa.
Se você falar assim: não faz isso,
não faz isso e pensa que você vai gravar e não vai fazer,
na verdade, você está reforçando o seu cérebro, faz isso, faz isso, faz isso.
Tá certo?
Então o não, ele atrapalha o entendimento das frases.
A primeira coisa que nós vamos ter que fazer é tornar essas expressões boolenas
positivas, tá certo?
E nós vamos fazer isso uma de cada vez, porque nós podemos errar isso.
Tornar a expressão booleana no caso do if then else,
significa que eu tenho que inverter aquilo que eu colocava no then
agora passa a ser o que ia no else, o que vai no else é o que estava no then.
Nós temos que inverter.
Para garantir que nós não estamos fazendo errado isso,
nós fazemos a refatoração para if then else, para uma expressão booleana
trocando de negativa para positiva, nós tiramos o not, tá certo?
Então, você é obrigado a inverter o if then else.
E aí testamos, pois nós podemos fazer errado de alguma forma, tá certo?
Aí nós testamos, Essa é a ideia.
Então vamos dar uma olhada aqui, como eu tenho 3 variáveis booleanas nós vamos
fazer ciclo, nós vamos ciclar 3 vezes o nosso ciclo de refatoração.
Três vezes nós vamos fazer pois existem 3 variáveis boolenas, tá certo?
Então, como é que fica agora o nosso código aqui?
Olha, já começa a fica muito mais claro.
Né, tá certo?
Por que eu trago a informação que é relevante para mim muito próximo,
né, tá certo.
Então quando eu pergunto agora, invés de perguntar if not senior, tá certo.
Eu já pergunto if is senior.
Aí o discount é 0.
Caso contrário, if is already subsidized,
tá certo, eu já ponho desconto 250.
Ou seja, as coisas começaram a ficar muito mais próximas.
Então, eu vou dar só 5 segundos para vocês pararem o vídeo e descobrirem qual é o
desconto se o cliente já foi subsidiado, tá certo?
Então, vamos lá.
Parem o vídeo.
[SEM_ÁUDIO] Voltando.
Agora, dificilmente, tendo colocado uma variável
expressando a intenção muito mais clara, tá certo?
Tendo trabalhado com uma expressão booleana no meu if positiva, tá certo?
Certamente, você deve ter acertado com menos de 5 segundos,
tá certo, que a resposta é 250, tá certo?
Ou seja, você talvez já soubesse dessa resposta por causa dos testes que a gente
vem repetindo, tá certo.
Mas agora você consegue encontrar isso muito mais rapidamente do que
anteriormente, tá certo?
E se eu perguntar também para vocês, qual é o desconto se o cliente é full time?
Também é muito rapidamente que vai acontecer isso.
Tá certo?
Vocês vão conseguir encontrar nesse código muito mais rapidamente.
Com isso nós encerramos essa vídeo aula, que nós quebramos duas partes, tá certo?
Nós encerramos agora a vídeo aula até o mau cheiro 2, tá certo?
E nós mostramos para vocês que, simplesmente, fazendo esses 2,
a refatoração desses 2 mau cheiros, o código já ficou muito mais claro
e muito mais fácil de encontrar coisas que eu perguntar sobre o código, tá certo?
Para qualquer uma das perguntas que eu quiser fazer ali, fica muito mais rápido.
Claro, o que é que acontece?
Existe, como nós vimos, mais 3 tipos de maus cheiros que
ainda atrapalham, quer dizer, ao eliminar esses novos,
esses 3 tipos adicionais, o nosso código vai ficar muito mais claro,
muito mais compreensível e fácil de aceitar acréscimos,
alterações ou incorporações do código com outras funcionalidades,
com outras responsabilidades.
Obrigado.
[MÚSICA]