Convenções de Nomenclatura Javascript


12

Sou de Java e sou novo em JavaScript. Eu notei muitos métodos JavaScript usando nomes de parâmetro de caractere único, como no exemplo a seguir.

doSomething(a,b,c)

Não gosto, mas um colega desenvolvedor de JavaScript me convenceu de que isso é feito para reduzir o tamanho do arquivo, observando que os arquivos JavaScript precisam ser transferidos para o navegador.

Então me vi conversando com outro desenvolvedor. Ele me mostrou como o Firefox truncará nomes de variáveis ​​para carregar a página mais rapidamente. Essa é uma prática padrão para navegadores da web?

Quais são as conversões de nomes de práticas recomendadas que devem ser seguidas ao programar em JavaScript? O comprimento do identificador importa e, em caso afirmativo, até que ponto?


13
Eu duvido que os navegadores alterem os nomes das variáveis. Na presença de eval, não é seguro (sim, evalé horrível, mas faz parte do padrão e você não descarta a compilância padrão para uma otimização) e não ajuda nem um pouco na redução do tráfego - você ainda envie o arquivo completo.

4
Eu já vi desenvolvedores discutindo sobre as vantagens de nomes curtos de variáveis. Não dê ouvidos a eles. Isso quase sempre é uma desculpa para "sou muito esperto para inventar um bom nome" ou "sou muito preguiçoso para digitar tantos caracteres".
Doc Brown

@ DocBrown: Mesmo eu não gostei. Desde que eu não sou um especialista em JavaScript queria conhecer as melhores práticas.
ManuPK 27/03

No final do dia, estavam conversando sobre talvez 50 a 100 KB de dados adicionais para usar nomes de métodos significativos? Se 100KB causar um problema de velocidade, não vale a pena tentar resolver, porque não há um grupo grande de usuários com esse problema.
Ramhound 4/10/12

Respostas:


26

Você verá que os próprios desenvolvedores não estão usando nomes curtos de variáveis. Enquanto desenvolvem, eles estão usando nomes de variáveis ​​significativos e detalhados.

Em seguida , no processo de compilação / liberação, o código que eles escreveram é executado em um minificador / ofuscador com a intenção de minimizar o tamanho do arquivo, como uma prática recomendada para acelerar um site. Este é um opcional etapa se você se importa que muito sobre o desempenho. A maioria dos sites pequenos não faz isso.

Você , como desenvolvedor, não deve se preocupar com o processo de minificação / ofuscação; escreva seu código para que seja legível, significativo, bem documentado e bem estruturado. Então, se você se preocupa tanto com o desempenho (opcional, não se esqueça!), Introduza um minificador / ofuscador no processo de liberação para minimizar o código (remover espaços em branco, novas linhas, comentários etc.) e ofuscá-lo (por exemplo, reduzir variáveis nomes). Um bom artigo que explica ofuscação vs minificação pode ser encontrado aqui .

Além disso, o Desktop FireFox não truncará o período de nomes de variáveis . O truncamento de nomes de variáveis ​​existe para acelerar o download da página. Quando o FireFox obtém o arquivo, ele já foi baixado e, portanto, não há necessidade de fazê-lo. Seu amigo pode executar um plugin que está fazendo isso; nesse caso, diga a ele para desinstalá-lo, porque é inútil.

Para conclusão, alguns navegadores (móveis) têm a opção de usar servidores intermediários, que interceptam as respostas dos recursos solicitados e os compactam para você (o que pode incluir a redução dos arquivos JavaScript). Observe que a compactação é feita no servidor (ou seja, antes de você fazer o download da página), daí o benefício potencial de fazer o download de um arquivo menor, e não no navegador, depois de já ter baixado o arquivo (conforme sugerido na pergunta). Esses navegadores móveis incluem o Opera Mini e versões mais recentes do Google Chrome (pelo menos no iOS; não tenho certeza sobre o Android). Para mais informações, clique aqui .


11

Não, nem todos os navegadores encurtarão automaticamente o JavaScript para ajudar no desempenho.

No entanto, no caso do JavaScript, você não deve sacrificar a legibilidade / manutenção do código para obter ganhos de velocidade ou segurança de processamento, pois existem ferramentas chamadas ofuscadores e outras ferramentas chamadas shinkers (ou compressores) que foram projetadas para essa finalidade.

Lembre-se, não pré-otimize. Se sua página estiver carregando com rapidez suficiente e você não tiver nenhum conteúdo excessivamente sensível no JavaScript, não se preocupe. Nomeie suas variáveis ​​com nomes significativos. A legibilidade do código é altamente importante para a manutenção e raramente, se é que alguma vez, deve ser sacrificada.

Se você quiser uma referência a algumas boas convenções de codificação JavaScript, recomendo usá- las .



1

Eu trabalhei em JavaScript por muito tempo.

Tínhamos um padrão de nomenclatura que você tinha que usar notação húngara para todas as variáveis.

Pareceu funcionar bem. Eu sei que existem casos contra o uso disso, mas funcionou bem para nós. Especialmente quando você tem arquivos JavaScript enormes, onde precisa encontrar coisas.

Eu recomendaria não otimizar prematuramente. É muito provável que você acabe com um código confuso que não é realmente muito mais rápido.


5
Notação húngara? Isso é velha escola. Notação húngara é um antigo relíquia de desenvolvimento e, com o tempo, não é mais recomendado.
Smokefoot 13/03/12

2
Eu costumo usá-lo um pouco, mas apenas para valores que são agrupados por jquery, aqueles que começarei com um $. O problema com a notação húngara é que as pessoas costumavam dizer que você digita em termos de "int" vs "String" e não em termos de sematics de um programa
Zachary K

"Especialmente quando você tem arquivos JavaScript enormes, onde precisa encontrar coisas". -- Eu te escuto. Mas a notação húngara é apenas um adesivo - não ajudará a longo prazo, apenas confundirá quando você precisar alterar o tipo de algo, mas não terá tempo para alterar todos os prefixos de variáveis. Automatizando tudo isso é onde o GWT entra em sua própria IMO.
funkybro

1
Não compro necessariamente usando a notação como "quebrando" os aspectos vagamente digitados da linguagem. Claro, você precisaria alterar o nome ao alterar o tipo, mas isso seria uma boa coisa a se fazer para que você possa acompanhar o que está fazendo. Eu sei que existem aspectos que são feios. Mas, se você já trabalhou em um projeto LARGE (estou falando centenas de milhares de linhas de código) em uma linguagem pouco digitada, isso pode ajudá-lo a encontrar o caminho mais rápido em determinados casos. Dizer que é datado, etc, realmente não trata do principal problema que o OP estava tentando resolver.
Alan Delimon

1
A notação húngara é uma daquelas coisas que as pessoas descartam imediatamente sem realmente entender o porquê. Descobriu que está na mesma categoria em gotoque as pessoas repetem o mantra sem pensar 'não use goto ... não use goto ...' . A realidade é que é apenas uma ferramenta no seu kit de ferramentas. Como qualquer ferramenta, ele tem situações em que é útil e situações em que não é tão útil (ou até prejudicial). É como se alguém tivesse tido uma experiência ruim tentando serrar um pedaço de madeira com um martelo e depois proclamou 'nunca use martelos, serra muito melhor!' . Generalizações são sempre errado
MattDavey

1

O comprimento do identificador não importa. Como dito por outros, na produção, o Minification pode ser usado para reduzir o tempo de download do script. De fato, uma convenção de codificação / nomeação aceitável deve ser seguida, especialmente porque o JavaScript é uma linguagem peculiar e, por tanto tempo, o JavaScript foi negligenciado como apenas uma coisa para fazer o trabalho. Se você procura um local para convenção de nomenclatura, o Guia de estilos do JavaScript do Google é um bom local. Sugere,

  • functionNamesLikeThis, por exemplo, getCashbackData () {}
  • variableNamesLikeThis, por exemplo, var alertInterval = 10;
  • ClassNamesLikeThis, por exemplo, var CustomerOrder = {getOrderLines: function () {}}
  • EnumNamesLikeThis, por exemplo, var ColorOfChoice = {White: "#FFFFFF"}
  • methodNamesLikeThis, por exemplo, var CustomerOrder = {getOrderLine: function () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS, por exemplo, var EPOCH_UNIX = "01011970"

Você tem mais alguma coisa a acrescentar do que um monte de links? Quero dizer, você nem explica quem é Douglas Crockford.
Ramhound # 14:

0

Enfurecido pela filosofia de "desenvolvedor de código limpo" (e agora você sabe das postagens acima que, devido à redução do tamanho dos nomes de suas variáveis, terá impacto nulo no desempenho), só posso aconselhar:

  1. Encontre o melhor IDE para as suas necessidades de desenvolvimento pessoal que possua recursos decentes de conclusão automática e intellisense, como aptana, netbeans, eclipse (todos gratuitos) ou qualquer um dos inúmeros produtos comerciais (se eu tivesse um jogo livre, eu veja os produtos da JetBrains)
  2. Escreva seu código de forma que qualquer comentário seja supérfluo. Isso significa que, em vez de escrever

    getXy(e) { return [e.pageX, e.pageY ] }

    o que pode significar realmente qualquer coisa (especialmente em uma linguagem mal digitada, como js;), você faz o código se expressar

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }

    Em um bom IDE, você normalmente nunca digitaria qualquer nome de variável por muito tempo duas vezes - segundos depois de digitar algumas letras e apenas pressionar enter no preenchimento automático. Se você insistir em digitar todos os caracteres, um bom IDE irá notá-lo de qualquer maneira. Este é apenas um exemplo muito superficial, portanto, sugiro fortemente (não como uma forma de crítica, mas como uma recomendação honesta) que você

  3. Obtenha os livros "Clean Code", de Robert C.Martin, ou "Pragmatic Programmer", de Hunt / Thomas, e nunca mais se faça esse tipo de pergunta - você estará ocupado demais trabalhando em um servidor de integração contínuo para automatizar o teste chato. -, e construa partes do processo de desenvolvimento (incluindo minificação) e concentre-se na parte divertida, escrevendo um código claramente compreensível que faça ótimas coisas!

PS Se você precisar se familiarizar com o desenvolvimento de código javascript de última geração, dê uma olhada no livro de John "Mr. jQuery" Resig sobre "Pro Javascript Techniques" logo após ou junto com o acima.

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.