Guia de estilo de codificação para aplicativos node.js. [fechadas]


130

Existe um (ou vários) guia de estilo de codificação para node.js? Caso contrário, quais são os estilos emergentes usados ​​pelos principais projetos de nós de código aberto?

Estou procurando um guia (ou vários guias) ao longo das linhas do PEP 8 , o Guia de Estilo de Codificação canônico para Python. Vi vários guias JavaScript que não valem a pena vincular aqui (principalmente antigos e direcionados ao JavaScript do cliente). Encontrei um guia de estilo node.js interessante .

Um guia de estilo de codificação, ou convenções de codificação, deve incluir (mas não está limitado a):

  • Layout do código: recuo (2 espaços, 4 espaços, guias, ...), novas linhas, quebras de linha, etc.
  • Espaço em branco, por exemplo, "function (arg)" vs. "function (arg)"
  • Ponto e vírgula ou nenhum ponto e vírgula, declaração var, ...
  • Nomear, por exemplo, do_this () vs. doThis (), var_name vs. varName, ...
  • node.js e idiomas JavaScript, por exemplo, == vs. ===, o primeiro argumento do retorno de chamada é um objeto de erro, ...
  • Comentários e documentação
  • Ferramentas de acompanhamento, como verificador de cotão, estrutura de teste de unidade, ...

Esse tópico obviamente é altamente subjetivo, mas acho que é uma etapa importante da comunidade estabelecer um estilo de codificação comum e amplamente aceito no processo de amadurecimento. Além disso, não se trata apenas de gosto. Em particular, regras como "use === em vez de ==" influenciam diretamente a qualidade do código.


eu acho que depende muito da "estrutura" que você usa (se houver); por exemplo, você pode conferir spludo.com/source/coding-standards, mas outros podem considerar
abordagens

4
"Alguém tem um bom conjunto de guias de estilo" pode ou não ser subjetivo, mas "Quais são os estilos emergentes" certamente é. Você já encontrou o guia de Felix, que obviamente não concordo com aspectos (em alguns casos, fortemente) e concordo com outros aspectos. E esse é o problema. Muito, muito rapidamente, entra em "Não, o estilo que estou vendo emergir usa guias!" "Não, o estilo que estou vendo emergir usa quatro espaços!" "Não, o estilo que estou vendo emergir usa dois espaços!" Quando, é claro, o que as pessoas realmente querem dizer é "o estilo que eu prefiro", não "o estilo que estou vendo surgir".
TJ Crowder

2
@TJ Croweder O estilo que estou vendo emergir não usa espaços!
Raynos 31/03

+1 pergunta impressionante. Eu gostaria de ter esses links há muito tempo.
Bryan Downing

Questão subjetiva.
Niels Abildgaard

Respostas:


120

Eu revisaria os padrões de codificação verificados pelo JSLint ou examinaria o autor dos padrões de codificação do NPM (Isaac Shlueter) .

Você também pode observar o estilo usado pelos notáveis ​​codificadores Node.JS:

Vou jogar o meu lá por uma boa medida;)

Edit: Sugestões de @alienhard

Na IMO, existem algumas regras de ouro que você deve seguir:

  • Nunca use withoueval
  • Use ===sobre==
  • Sempre declare suas variáveis varno escopo apropriado - não faça fallback no escopo global
  • Encerre seu aplicativo em um encerramento (function(){})()se você planeja liberar código que é executado no servidor e no navegador
  • Os errretornos de chamada devem ser usados como o primeiro argumento e, se eles mesmos receberem um retorno de chamada como argumento, deve ser o último, por exemplocallback(err, param1, param2, callback)

Recuo, espaçamento entre chaves e palavras-chave e posicionamento de ponto e vírgula são todos uma questão de preferência.


2
Obrigado pela resposta. Fiquei me perguntando por que você não mencionou Ryan;). Mas imaginei, no wiki oficial do repositório de nós, que eles seguem o guia de estilo JavaScript do Google . Eu não fiz knwo isso antes ...
alienhard

15

Há um novo padrão na cidade.

Use estilo padrão .

Estilo padrão js


1
Eu não tenho idéia por que isso tem apenas 3 upvotes ...
Luc

4
@ Luc talvez por causa da regra "Sem ponto e vírgula". Parece uma escolha estranha para algo chamado estilo "Padrão".
Daniel Yankowsky

Sem ponto e vírgula não é uma boa ideia. Isso quebrará alguma minificação.
Denov #

Este standardpacote não gosta de ponto e vírgula. Se você gosta de ponto e vírgula, há semistandard
yesnik 12/07/19

10

Você pode aprender muitas boas práticas de estilo de codificação nos guias JavaScript orientados para o cliente (a maioria se aplica também ao node.js em geral, pois a diferença entre o cliente e o servidor está principalmente nas bibliotecas e não na própria linguagem). Por exemplo, o livro JavaScript Patterns dedica a este tópico algumas partes do capítulo 2 . Também o site , livro e vídeos de Douglas Crockford são materiais obrigatórios para adotar estilos de codificação específicos do JavaScript e práticas recomendadas, eu diria.


3
+1 no livro de Douglas Crockford "JavaScript: The Good Parts". Ele contém muitas informações em um livro pequeno / conciso - uma leitura pesada, mas um dos melhores livros que já li.
Alex KeySmith

7

Ao usar o nó do terminal, é útil para o seu código-fonte usar espaços para recuo. Caso contrário, o cursor de "erro aqui" não será alinhado.

Com guias:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

Com espaços:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

Esse pode ser um problema exclusivo do Mac, mas eu suspeitaria que não.


A OP pediu um guia de estilo. Não é uma dica específica.
mightyiam

@mightyiam É verdade, mas as regras de indentação fazem parte de quase todos os guias de estilo. Talvez o meu argumento possa ajudar o OP a avaliar alguns dos guias de estilo que outras pessoas vincularão, ou pode ajudá-lo a desenvolver seu próprio guia de estilo.
Daniel Yankowsky



2

Para Coffee-Script, em que recuos incorretos significam erros de compilação

usar

:set tabstop=2
:set shiftwidth=2
:set expandtab

projectos de café populares, zombie,brunch usa esta configuração para irregularidades.

Editar:

Na verdade, basta usar isso! https://github.com/paulmillr/code-style-guides (um dos principais colaboradores brunch)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.