levpay / desafio

0 stars 4 forks source link

Naiara #9

Open arxdsilva opened 4 years ago

arxdsilva commented 4 years ago

https://github.com/Nnayara7/GoApiSuperHero

arxdsilva commented 4 years ago

Testes estao passando?

Os testes existem, mas estao fora do padrao de utilizacao do mercado (ex: https://larien.gitbook.io/aprenda-go-com-testes/primeiros-passos-com-go/inteiros).

A app roda?

Nao funciona da forma desejada, sem que hajam modificacoes ao codigo fonte para executar (ex: https://medium.com/@rafaelacioly/construindo-uma-api-restful-com-go-d6007e4faff6).

A app funcionaria em alguma cloud?

Nao, pois a API nao utiliza portas de rede.

A arquitetura de pacotes faz sentido? Os pacotes da aplicacao fazem sentido, mas com algumas ressalvas (ex: routes que poderia nao ser um pacote). Existem erros de pacotes tambem externos mas que foram desconsiderados na avaliacao, pois sao erros de quem realmente nao usa a linguagem (pacotes como gopkg.in, binarios não costumam estar no código fonte pois são baixados como bibliotecas para execução).

Uma boa pratica seria o comentado pelo Avelino no link (https://imasters.com.br/back-end/guia-de-estilo-para-pacotes-go)

Documentacao das rotas esta clara?

Documentacao está descritiva, mas as rotas apesar inicialmente esboçadas não foram utilizadas em nenhum pacote. Uma boa ferramenta é o Swagger (swagger.io).

arxdsilva commented 4 years ago

estamos aguardando a candidata realizar as devidas adequacoes, caso nao ocorra ate o dia 17, o mesmo sera indeferido

arxdsilva commented 4 years ago

Pontos a melhorar:

  1. Interfaces sao implementadas independente do pacote em que estao localizadas. Entao como voce declarou o SuperHeroCtrl no pacote types, nao precisaria ser redeclarado em outro pacote.
  2. A utilizacao de interfaces permite implementacoes mock dos comportamentos desejados. Ex: "conexoes" com o banco que na realidade fazem operacoes em um mapa ao inves de diretamente no DB, o que facilita criar testes.
  3. Erros foram muitas vezes ignorados ou utilizados como panic (somente na inicializacao) - o comportamento correto é sempre garantir que eles sejam retornados ou devidamente logados (http://goporexemplo.golangbr.org/errors.html).
  4. Existem domínios do desafio que demandam testes unitários (ex: numero [int] de relatives), pois esta é uma lógica que precisa ser separada e nao somente recortada da API externa.
  5. Existem alguns erros de formatacao que evidenciam a falta da utilizacao do fmt.
  6. Os pacotes ainda estao organizados de forma incorreta (pkg/linux_amd64/github.com, gopkg.in, ...)