Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correção do Desafio! #1

Open
WellsSA opened this issue May 21, 2022 · 0 comments
Open

Correção do Desafio! #1

WellsSA opened this issue May 21, 2022 · 0 comments

Comments

@WellsSA
Copy link

WellsSA commented May 21, 2022

Implementação

  • Completou com êxito o desafio principal!

src/entity

Pontos fortes

Possíveis pontos de melhoria

  • Aqui em vez de usar o toString(), também poderia ter sido usado o Symbol.toPrimitive, já gerenciando qualquer tipo de conversão :)

    toString() {
    return `[id=${this.id}]`
    }

  • Aqui tem linhas com e sem ponto e vírgula no final. Usar alguma extenção na IDE (tipo o Prettier no VSCode) pra fazer o linting e padronizar o projeto pode ser uma boa! - em desafios de código em processos seletivos essa acaba sendo uma das coisas que a galera mais repara

src/service

Pontos fortes

  • Soube implementar o generator que chama a repository fazendo a paginação
    async *list() {
    // TODO: implementar generator que chama a repository fazendo a paginação
    let page = 1
    let hasData = true
    while (hasData) {
    const resultObject = await this.repository.list(page)
    if (resultObject.data.length > 0 ) {
    hasData = true
    const cryptos = resultObject.data
    const cryptosObjects = cryptos.map(c => new Crypto({...c}))
    page += 1
    yield cryptosObjects
    }
    }
    }

Possíveis pontos de melhoria

  • Aqui vale lembrar que o spread faz um loop internamente, então usar spread dentro de um map é um loop dentro de um loop (complexidade quadrática) - Como nesse caso não precisaria quebrar a referência e criar um novo objeto, é bom evitar :)

    const cryptosObjects = cryptos.map(c => new Crypto({...c}))

  • Forma bem bacana de fazer a verificação se tem dados ou não antes de continuar o loop no generator! Mas como o hasData nunca é setado pra false, ainda continua um loop infinito 😆 - o que nesse caso não tem problema pq a nossa repository já gerencia isso e não vai quebrar, mas invalida a implementação do hasData já que nesse caso ele tá fazendo o papel de um while(true) -

    let hasData = true
    while (hasData) {

src/util

Pontos fortes

Considerações finais

Como sempre, mandou muito bem! Conseguiu aprender e aplicar corretamente as estruturas vistas no curso no melhor cenário possível pra elas dentro do desafio, e ainda por cima a implementação ficou praticamente idêntica à solução oficial! Como sempre, mandou muito bem, e espero poder ver mais códigos seus aqui pelos desafios. Parabéns, Claudio! 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant