Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Refatoração e não repetição de código

Como agora passamos os cliente pelo construtor da classe e podemos defini-lo na sequencia chamando o método set, temos a repetição de código seguinte:

 constructor(client, agency){
     if(client instanceof Client) this.#client = client;

    //...codigo omitido
}

e:

set client(client){
    if(client instanceof Client) this.#client = client;
}

temos o mesmo if dentro de dois blocos, acredito que com o passar do tempo, novas regras irão ser adicionadas e isso vai ficar gigante e com segurança frágil, pois o dev terá que se lembrar de alterar nos dois ifs, para resolver isso, qual seria a melhor solução? criar um método privado dentro da classe que faz a validação seria uma boa opção ou existe algo melhor?

Abraço, aguardo!!!

5 respostas

Fala ai João, tudo bem? Desculpas mas eu não achei onde esses dois construtores se repetem olhando o vídeo e transcrição do exercício que você abriu a dúvida.

Consegue compartilhar os trechos de códigos repetidos para eu dar uma olhada e te falar um dos possíveis jeitos de não duplica-los?

Fico no aguardo.

Boa noite, Matheus, beleza? acho que não expliquei corretamenta, mas minha duvida seria: eu tenho dois if exatamente iguais, repetir código não é bom, pois na medida do tempo eles vão crescendo e fica uma bola de neve, então, teria alguma alternativa de trocar esse:

if(client instanceof Client)

por:

if(isClient(client))

pensei em criar um método privado, mas teria outra alternativa que não popularia a minha classe com verificações?

solução!

Fala João, temos N maneiras de resolver esse problema.

Nesse caso você pode criar um utils que iria ser responsável por esse trecho, exemplo (como você mesmo sugeriu):

import Client from './arquivo-client.js' // trocar para o nome correto

const isClient = obj => obj instanceof Client

export { isClient }

Dessa forma você poderia importar essa função e utilizar onde seja necessário:

import { isClient } from './utils/isClient'

if (isClient(client)) {}

O util basicamente é uma função que pode ser reaproveitada em N lugares.

Espero ter ajudado.

Show cara, acredito que colocar esse tipo de método dentro de uma pasta utils fica massa, obgggggggg!

Magina João, sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.