Quick reference

Escopo: JavaScript. Resumo das convenções; o raciocínio que sustenta cada uma está em conventions/.

Esta página serve a quem já leu as convenções e precisa conferir uma decisão em segundos: que caixa usar no nome, qual verbo escolher, que palavra não usar. Se algo aqui parecer arbitrário, a página correspondente em conventions/ explica o porquê.

Nomenclatura

CategoriaConvençãoExemplos
VariáveiscamelCaseuserName, totalAmount, isActive
ConstantesUPPER_SNAKE_CASEMAX_RETRIES, ONE_DAY_MS, API_URL
FunçõescamelCasefetchUser, calculateTax, validateEmail
ClassesPascalCaseUserService, OrderRepository, BaseError
Booleanosis/has/can/should + camelCaseisValid, hasPermission, canRetry, shouldSync
Coleçõesplural camelCaseorders, activeUsers, pendingItems

Verbos

O verbo é a primeira palavra do nome da função, e ele promete o que a função faz. Escolha o verbo que descreve a ação, e o leitor não precisa abrir o corpo para saber se ela busca, grava ou só calcula.

VerboUsoExemplos
fetch / find / getBuscafetchUserById, findActiveOrders, getConfig
save / persistPersistênciasaveInvoice, persistChanges
compute / calculateCálculocomputeTotal, calculateDiscount
validate / checkVerificaçãovalidateEmail, checkPermission
notify / sendComunicaçãonotifyUser, sendConfirmation
format / renderApresentaçãoformatDate, renderTemplate
build / createConstruçãobuildReport, createInstance
parse / mapConversãoparseDate, mapToViewModel

Nomes proibidos

Cada nome da coluna esquerda cabe em qualquer contexto, e é por isso que nenhum deles informa nada. Troque pelo verbo que descreve a ação ou pelo conceito do domínio.

EvitarUsar
handle, do, run, processverbo que descreve a ação: save, validate, send
data, info, resultnome do conceito: user, invoice, summary
res, req, ctxresponse, request, context
tmp, val, cb, fnnome completo e expressivo
item, obj, thingnome do domínio: order, product, entry

Desestruturação no corpo, não nos parâmetros

A desestruturação (extrair campos de um objeto em variáveis soltas) na assinatura esconde o que a função recebe: a lista de campos aparece no lugar do nome do objeto, e quem lê a chamada perde o conceito. Receba o objeto inteiro e abra os campos na primeira linha do corpo.

function formatUser(user) {
  const { name, email } = user;
  // ...
}

DoDocs v3.7.0 · Desenvolvido por @thiagocajadev · Baseado no trabalho de pmndrs/docs · Poimandres.