aceleradora-TW / prescare

Prescrição eletrônica para a Casa do Menino Jesus de Praga
10 stars 4 forks source link

Adiciona eslint #85

Closed yrachid closed 6 years ago

yrachid commented 6 years ago

Esta PR adiciona e configura o Eslint, uma ferramenta utilizada para auxiliar na manutenção dos padrões de código do projeto. Em outras palavras, ela serve para monitorar e garantir que o código está dentro dos padrões de estilo definido pelo time, onde padrões de estilo significa coisas como:

As regras estão definidas no arquivo .eslintrc.json.

Agora, quando executamos npm run lint, teremos um pequeno relatório com todos os erros que o eslint encontrou no código da aplicação. Eis o resultado quando executei no projeto:

screenshot from 2018-07-09 14-19-50

De acordo com as regras que foram definidas, existem mais de mil problemas. Podemos corrigir estes problemas usando npx eslint --fix src/ test, no entanto, como literalmente todos os arquivos do projeto serão modificados, não acho que essa seja uma boa ideia, já que o diff disso será imenso e os conflitos serão impossíveis de resolver. Por isso, gostaria de introduzir primeiramente a configuração do linter e, então, criar PRs pequenas que corrigem poucos arquivos de cada vez.

yrachid commented 6 years ago

Ponto e vírgula é uma decisão polêmica. Muitas pessoas gostariam de não utilizá-lo (incluindo eu), mas, no entanto, ele é necessário, pois o JavaScript possui alguns bugs quando ele está ausente, como, por exemplo:

const sum = (a, b) => {
  return 
  {
    result: a + b
  }
}

const result = sum(1, 3)
console.log(result)

O resultado esperado seria:

{result: 4}

No entanto, temos:

undefined

Outro exemplo:

const a = 5
const b = 10
const c = a + b

[1, 2, 3].forEach((e) => console.log(e))

Causará o erro:

TypeError: Cannot read property 'forEach' of undefined

Artigo de onde tirei os exemplos.

Atualização

No caso do primeiro exemplo, o problema não é a falta do ;, mas sim a quebra de linha no return. Para corrigir o problema teríamos que alterar o código para o seguinte:

const sum = (a, b) => {
  return {
    result: a + b
  }
}

const result = sum(1, 3)
console.log(result)