Por que code style não é sobre "como ficar bonito", mas sobre "como não enlouquecer"?
\n\nImagine: você abre o código de um colega e lá está uma mistura de var e let, indentação inconsistente (às vezes 2 espaços, às vezes 4, às vezes tabulação), e ponto e vírgula às vezes tem, às vezes não. Familiar? Se sim, você sabe como esse código rapidamente transforma o trabalho em um inferno. Sozinho você ainda consegue se virar, mas quando o projeto tem 5 a 10 desenvolvedores em JavaScript, a falta de um code style unificado mata a produtividade.
Code style (estilo de código) e convenções não são "caprichos" do linter. É a linguagem que sua equipe usa para se comunicar. Quando cada um escreve do seu jeito, o código vira uma "torre de Babel". E quando vocês combinam as regras, param de perder horas em code review discutindo espaços e começam a discutir arquitetura.
\n\nNeste artigo, mostrarei como implementar padrões de código para JavaScript em equipe, darei exemplos reais e contarei quais ferramentas realmente salvam prazos. Vamos lá!
\n\nPor que convenções em JavaScript são a base?
\n\nJavaScript é uma linguagem incrivelmente flexível. Você pode escrever a mesma função de dezenas de maneiras. E isso é ótimo enquanto você trabalha sozinho. Mas em equipe, a flexibilidade se transforma em caos. Aqui estão três razões pelas quais as convenções js são indispensáveis:
\n\n- \n
- Velocidade de integração no projeto. Um novo desenvolvedor abre o código e entende a lógica imediatamente, porque tudo está "como costumamos fazer". Não precisa adivinhar o que significa
_thisou por que a variável se chamax1. \n - Menos bugs. Um estilo de código JavaScript unificado reduz a probabilidade de erros bobos: ponto e vírgula esquecido em um lugar, vírgula extra em outro — o linter detecta. \n
- Code review deixa de ser uma guerra. Em vez de "Aqui precisa de tabulação!", vocês discutem "Que tal extrairmos essa lógica para um hook separado?". \n
A propósito, uma pesquisa do Google mostrou que equipes com um code style unificado gastam 30% menos tempo em revisões. O número é impressionante, não é?
\n\nTop 5 convenções JavaScript que salvarão sua equipe
\n\nNão vou sobrecarregá-lo com centenas de regras. Destacarei cinco básicas que cobrem 90% dos problemas. O resto, ajuste conforme sua necessidade.
\n\n1. Nomenclatura: fale de forma clara
\nUm nome de variável ruim é a raiz de todo mal. Em JavaScript, as convenções de nomenclatura são quase padronizadas:
\n- \n
- camelCase para variáveis e funções:
userName,getUserData. \n - PascalCase para classes e componentes React:
UserProfile,ApiService. \n - UPPER_SNAKE_CASE para constantes conhecidas antes da execução:
MAX_RETRY_COUNT. \n
Exemplo de ruim e bom:
\n// Ruim: não dá pra entender nada\nlet d = new Date();\nlet fn = () => { ... };\n\n// Bom: lê-se como um livro\nlet currentDate = new Date();\nlet fetchUserData = () => { ... };\n\n2. Ponto e vírgula: colocar ou não?
\nDiscussão mais antiga que o próprio JavaScript. Mas em equipe, é melhor escolher uma regra e configurar o ESLint. Eu recomendo colocar. O ASI (inserção automática de ponto e vírgula) às vezes falha, e o código quebra em lugares inesperados.
\n// Sem ponto e vírgula — erro potencial\nlet a = 1\n[1, 2, 3].forEach(console.log) // Erro! O interpretador acha que é continuação da linha\n\n// Com ponto e vírgula — tudo ok\nlet a = 1;\n[1, 2, 3].forEach(console.log);\n\n3. Arrow functions vs function
\nAqui as convenções JavaScript sugerem: use arrow functions para callbacks e funções curtas, e function para declarações no nível superior (por causa do hoisting).
// Bom: arrow para callback\nconst numbers = [1, 2, 3];\nconst doubled = numbers.map(n => n * 2);\n\n// Bom: function para declaração\nfunction calculateTotal(price, tax) {\n return price + pr