Let vs const - o que usar?

Olá Habr! Apresento a você a tradução do artigo “On let vs const” de Dan Abramov .

Minha postagem anterior contém este parágrafo:

let vs const vs var : Normalmente, tudo o que você precisa é deixar . Se você precisar impedir a reescrita de uma variável, poderá usar const . (Alguns são muito pedantes sobre isso e preferem usar const quando há apenas uma atribuição de variável).

Essa declaração acabou sendo muito controversa, no Twitter'e e no Reddit'e imediatamente começaram discussões acaloradas sobre isso. Parece que a opinião mais popular (ou pelo menos verbalmente expressa pela maioria) é que você deve sempre usar const e referir-se a deixar apenas se necessário, o que pode ser fornecido pela regra prefer-const da ESLint.

Neste post, listarei brevemente todos os prós e contras que conheci e expressarei minha opinião pessoal sobre esse assunto.

Por que preferir const


  • Uma regra clara: essa é uma carga extra para o cérebro quando você precisa pensar cada vez que usar const ou let é melhor. A regra “Sempre use const onde ele funciona” evita problemas desnecessários e deixa essa tarefa para o linter.
  • As redesignações podem causar erros: em funções grandes, acontece que você pode não perceber se uma variável é redesignada e isso pode ser a causa dos erros. Especialmente em fechamentos. Const lhe dá a garantia de que você sempre verá o mesmo valor.
  • Entendendo a mutação: aqueles que estão começando a aprender JavaScript podem entender mal o princípio da const , pensando que ela impede a mutação de uma variável. É importante entender a diferença entre a mutação de uma variável e sua reatribuição. Usando const obriga você a entender e enfrentar essa distinção desde o início.
  • Reatribuições sem sentido: Às vezes, reatribuir uma variável não faz sentido. Por exemplo, em React Hooks, os valores que você obtém do gancho - como useState - são mais parecidos com parâmetros. Eles estão indo na mesma direção. Vendo um erro em sua atribuição, você aprenderá mais cedo sobre o fluxo de dados do React.
  • Vantagens da execução: também há afirmações raras de que o mecanismo JavaScript pode executar o código mais rapidamente onde const é usado, pois sabe que uma variável não pode ser substituída.

Por que não prefere const


  • Const perde seu significado: se usarmos const em todos os lugares, perderemos a capacidade de entender se era importante que algo não fosse reatribuído.
  • O constrangimento com a imunidade: em todas as discussões em que eles dizem que você deve sempre usar const , há quem fique confuso sobre a questão da imunidade. Isso não é surpreendente, pois as duas operações (declaração e reatribuição) usam o mesmo operador "=". Em resposta a isso, eles costumam dizer que você só precisa "aprender o idioma". No entanto, os contra-argumentos são tais que, se o método, que é evitar os erros dos iniciantes, confunde esses mesmos iniciantes, isso não é tão útil. E, infelizmente, isso não ajuda a evitar erros de mutação que se estendem aos módulos e afetam tudo.
  • Pressão para evitar excesso de declaração: Os apoiadores do método "const-first" forçam os desenvolvedores a não usar variáveis let in declaradas na condição. Por exemplo, você pode escrever
    const a = cond ? b : c 
    em vez de se condições, mesmo se os ramos b e c (objetos) forem complexos e for difícil dar nomes detalhados a eles.
  • A reatribuição não pode ser a causa de bugs: há três componentes principais em que a reatribuição pode ser a causa de bugs: o escopo é muito grande (como uma função modular ou grande), quando o valor é um parâmetro (pois não é esperado que isso seja igual a qualquer outra coisa) do que foi passado) e quando a variável é usada em uma função aninhada. No entanto, em muitas situações, a maioria das variáveis ​​não corresponde a nenhum desses casos, e os parâmetros não podem ser designados como constantes.
  • Não há vantagem de desempenho: é minha opinião que o mecanismo já foi avisado - quais variáveis ​​são declaradas uma vez, mesmo se você usar var ou let . Se continuarmos argumentando que const torna o código mais produtivo, também podemos argumentar que verificações adicionais podem aumentar o tempo de execução do que diminuí-lo. Sério, os motores são mais inteligentes.

Minha opinião


Eu não ligo

Eu posso usar qualquer regra que outras pessoas usem.

Se você se importa, use o linter, que automatiza a verificação e correção, alterando para const , para que não perca seu tempo na futura revisão de código.

Por fim, lembre-se de que os linters são projetados para facilitar o desenvolvimento. Se alguma regra incomodar você ou sua equipe, remova-a. Será o melhor. Aprenda com seus erros.

Link para o artigo original - On let vs const .

Source: https://habr.com/ru/post/pt482892/


All Articles