Programadores experientes já sabem e iniciantes saberão em breve que códigos sem padrão ou padronizados com regras que somente quem escreveu conhece, são um problema de produtividade, legibilidade e podem até mesmo gerar bugs. Sim, um código escrito porcamente pode fazer com que o programador deixe passar detalhes importantes.
Tendo isso em vista, algumas empresas e instituições lançaram style guides para nós e hoje falaremos do Google JavaScript Style Guides.
O Google não é o único a publicar um “manual” deste tipo, o style guide da Airbnb para JavaScript também é muito famoso e existem muitos outros pela internet. Mas vamos deixar de papo e vamos a algumas regras que achei extremamente pertinentes para programadores de quaisquer níveis.
Nome de arquivos
Nomes de arquivos devem ser sempre em caixa baixa e podem conter undescores ( _ )ou dashes ( – ), porém não é bom misturar os dois. Escolha um padrão e siga por todo o projeto. Os arquivos devem ter a extensão .js.
new-project.js // isso é bom new_project.js // isso é bom new_drugstore-project.js // isso é ruim newDrugstoreProject.js // isso é ruim
Importante: o enconding dos arquivos deve ser UTF-8
Indentação
Os códigos devem ser indentados usando-se dois espaços a cada ‘nível’ de código. A maioria dos editores de código atualmente permite a mudança de tabs para espaços e também a quantidade de espaços.
// ruim
function helloWorld() {
∙∙∙∙console.log('Olá a todos!');
}
// bom
function helloWorld() {
∙∙console.log('Olá a todos');
}
Braces (Chaves)
Chaves são obrigatórias em estruturas de controle if, else, for, do, while e devem ser usados mesmo que as instruções contenham apenas uma linha de código.
// errado
if(something() === 123)
doSomething();
// certo
if(something() === 123) {
doSomething();
}
Exceção: um if que tem uma condição curta e que cabe em apenas uma linha pode omitir as chaves se isso melhorar a legibilidade do código.
if(something()) return 'Olá';
Blocos de código não vazios
Os blocos de código não vazios seguem o estilo Kernighan and Ritchie, conhecido também como ‘Egyptian Brackets’.
Sempre existiu a brincadeira do “Que tipo de programador você é?”

// Egyptian Brackets
if(true) {
}
if(true)
{
}
Além disso, algumas outras regras devem ser seguidas.
- Nenhuma quebra de linha antes de abrir chaves
- Uma quebra de linha após abrir as chaves
- Uma quebra de linha antes de fechar as chaves
- Uma quebra de linha após fechar chaves (exceção para quando há else, catch ou while, por exemplo)
if(algo) {
try {
doSomething();
} catch(err) {
onError();
}
}
Ponto e vírgula são obrigatórios
Sempre use ponto e vírgula (semicolon) ao término de suas declarações. Apesar do código não falhar se não usarmos o guia, recomenda-se que SEMPRE usemos ao fim de cada declaração. As exceções são declarações de classes ou funções.
// errado
function waitExample() {
setTimeout(() => {
console.log(olá)
}, 3000)
}
// certo
function waitExample() {
setTimeout(() => {
console.log(olá);
}, 3000);
}
Variáveis
Use let ou const
Declare todas suas variáveis com let ou const. Use const como padrão, a não ser que sua variável precise ser atribuída novamente. Não devemos usar var em nenhuma ocasião.
// ruim var counter = 0; // bom let counter = 0;
Nome de variáveis
Use nomes significativos em inglês e usando lower camelCase, dê nome aos bois. Use variáveis com nomes que representam exatamente o que elas armazenam.
// Certos priceCountReader // Sem abreviação. numErrors // "num" é abreviação, mas é muito difundida. numDnsConnections // A maioria das pessoas conhece "DNS". // Errados n // Sem significado. nErr // Abreviação ambígua. wgcConnections // Somente seu grupo pode saber o significado. pcReader // Muita coisa pode ser abreviada como "pc". cstmrId // Remove letras internas da palavra. kSecondsPerDay // Não use notação húngara.
Constantes
Constantes devem ser nomeadas EM_CAIXA_ALTA e as palavras devem ser separadas por underscores.
// certo const EULER_NUMBER = 2,71; // errados const euler_number = 2,71; const EULERNUMBER = 2,71;
Uma variável por declaração
Cada declaração de variável deve declarar apenas uma variável. Não deve-se usar uma declaração múltipla.
// certo let a = 1; let b = 2; // errado let a = 1, b = 2;
Strings
Use single quotes, não double quotes em suas strings. Se for necessário usar aspas em uma string, use uma template string.
// errado let frase = "Olá a todos"; // certo let frase = 'Olá a todos'; // errado let frase = 'McDonald\u0027s'; // certo let frase = `McDonald's`;
Use template string ao invés de concatenação
Para colocar o valor de uma variável em uma string, use o string interpolation.
// errado
let helloWorld = 'Meu nome é ' + name + ' e tenho ' + age + ' anos';
// certo
let helloWorld = `Meu nome é ${name} e tenho ${age} anos`;
Use Arrow Functions
Arrow functions tornam o código mais conciso, legível e ainda resolvem diversas dificuldades com o this.
// Errado
[1, 2, 3].map(function(elemento) {
const multiplicador = elemento * 2;
return elemento * multiplicador;
});
// Certo
[1, 2, 3].map((elemento) => {
const multiplicador = elemento * 2;
return elemento * multiplicador;
});
Notas finais
A lista de instruções é bem longa e pode ser encontrada aqui.
Este artigo foi inspirado em um artigo que li em inglês e pode ser encontrado aqui.
Tudo isto não é obrigatório, mas são recomendações interessantes de um gigante da tecnologia, e qualquer padronização facilita bastante nossa vida no dia a dia. Imagine dar suporte a um código que não segue absolutamente nenhum padrão, certo?
Também existe a especificação de JavaScript da Airbnb; em breve falarei sobre ela também.
Obrigado!




