Pular para o conteúdo

Escrevendo Boas PRs e READMEs

Em code review, a descricao do seu PR e o ponto de entrada do revisor. Uma boa descricao de PR pode:

  • Permitir que o revisor entenda rapidamente o que voce fez
  • Reduzir perguntas de ida e volta
  • Mostrar que voce pensou bem
  • Economizar seu tempo quando voce consultar o historico daqui a 3 meses

Da mesma forma, um bom README pode:

  • Permitir que novos membros comecem rapidamente
  • Reduzir perguntas repetitivas
  • Fazer o projeto parecer profissional

Estrutura Padrao de Descricao de PR: What/Why/How/Testing

Seção intitulada “Estrutura Padrao de Descricao de PR: What/Why/How/Testing”

Resumo conciso, uma frase.

Refactor authentication flow to support OAuth2 and magic link sign-up

Expressoes-chave:

  • Add X — Nova funcionalidade
  • Fix X — Correcao de bug
  • Refactor X — Reescrever codigo (sem mudar funcionalidade)
  • Optimize X — Melhorar desempenho
  • Implement X — Implementar um design

A parte mais frequentemente ignorada. Explique contexto e motivacao.

Why:
- Users requested passwordless sign-up option
- Current session-based auth doesn't scale to multiple domains
- OAuth2 is industry standard for enterprise integrations

Sinais de um bom Why:

  • Menciona razao de negocio (necessidade do usuario, desempenho, manutenibilidade)
  • Explica por que a solucao atual nao e suficiente
  • Explica por que esta solucao e melhor

Visao geral de alto nivel da implementacao tecnica.

How:
1. Created JWT service using Web Crypto API for signing/verification
2. Replaced SessionMiddleware with AuthMiddleware that validates JWT
3. Added OAuth2 routes for Google/GitHub sign-in
4. Migrated user session storage from cookie to JWT claims
5. Added magic link generation and validation
Breaking changes:
- Moved user auth state from server session to JWT (stateless)
- Clients now need to store and send JWT in Authorization header

Explique como voce verificou que a mudanca esta correta.

Testing:
- Manual testing: Verified OAuth2 sign-in with Google and GitHub accounts
- Verified JWT expiration and refresh flow works correctly
- Existing auth tests pass (147 tests)
- Added 23 new tests for JWT and OAuth2 flows
- Load tested with 1000 concurrent requests (no issues)
- Tested on staging environment with real data

Principio: Presente para o que o codigo faz, passado para as mudancas que voce fez

ErroRazaoCorreto
”The function was created to handle X”Parece narrativa historica”The function handles X” ou “This PR adds a function that handles X"
"The code will validate input”Muito incerto”The code validates input"
"We added the feature” (no README)README nao conta historia”This feature allows users to…“

Principio: Primeira mencao usa “a/an”, subsequentes usam “the”; ou use plural para evitar artigos

ErroRazaoCorreto
”We refactored authentication flow”Nao esta claro qual flow”We refactored the authentication flow"
"Function handles case when user logs in”Falta “the""The function handles the case when a user logs in”

Principio: Ingles prefere voz ativa. A menos que voce nao queira dizer quem fez, use ativa

Passiva (interferencia comum)Ativa (melhor)
“The JWT is generated by the server""The server generates the JWT"
"The user data is stored in D1""We store user data in D1"
"Breaking changes were introduced""This PR introduces breaking changes”
PalavraUso
AddNova funcionalidade (nao existia): “Add OAuth2 support”
ImplementImplementar um design conhecido: “Implement the design from #123”
CreateGerar um novo objeto: “Create JWT service”
BuildConstruir sistema: “Build the CI/CD pipeline”
RefactorMelhorar codigo existente sem mudar funcionalidade: “Refactor auth middleware”
OptimizeMelhorar desempenho: “Optimize query performance”
FixCorrigir bug: “Fix race condition in cache”

Antes de enviar o PR, verifique:

  • Secao What explica claramente a mudanca
  • Secao Why tem razao de negocio ou tecnica (nao apenas “quis fazer assim”)
  • Secao How descreve o design de alto nivel, revisor nao precisa ler codigo linha por linha
  • Secao Testing descreve a cobertura de testes
  • Sem voz passiva excessiva
  • Artigos usados corretamente (“the” vs “a”)
  • Tempos verbais consistentes (presente para funcionalidade do codigo, passado para mudancas)
  • Links para issues relacionadas (se houver)
  • Primeira frase explica claramente o que o projeto e
  • Tem demo ou screenshot
  • Passos de instalacao claros e reproduziveis
  • Exemplos de uso podem ser copiados diretamente
  • Tem guia de contribuicao (se aceitar contribuicoes externas)
  • Tem licenca
  • Linguagem concisa (nem muito academica nem muito casual)