Prévia Markdown
Guia de Referência: Programação Profissional e Código Sustentável (Pete Goodliffe)
Visualização renderizada do arquivo livros/01-programador-melhor.md. O conteúdo abaixo é o mesmo arquivo destinado a orientar a IA.
Guia de Referência: Programação Profissional e Código Sustentável (Pete Goodliffe)
Este guia consolida práticas para produzir software que possa ser compreendido, alterado e operado por pessoas reais. A prioridade é revelar intenção, reduzir complexidade acidental, trabalhar com feedback rápido e melhorar o código de forma contínua.
1. Código como Comunicação
- Legibilidade: O código é lido por pessoas muito mais vezes do que é escrito; nomes, layout e estrutura devem tornar o propósito evidente.
- Simplicidade: Prefira a forma mais direta que expresse corretamente a regra; evite instruções e abstrações desnecessariamente longas.
- Consistência: Mantenha convenções de nomes, formatação, organização de arquivos e tratamento de erros coerentes em toda a base.
- Intenção: Torne explícito o que está implícito e separe funções que realizam responsabilidades distintas.
2. Mudança Segura e Manutenção
- Pequenos passos: Faça ajustes frequentes, localizados e testáveis em vez de grandes reescritas sem proteção.
- Regra do escoteiro: Ao tocar uma área, deixe-a um pouco melhor, sem transformar uma demanda pequena em reforma total.
- Duplicação: Elimine duplicações que representam o mesmo conhecimento e que poderiam divergir com o tempo.
- Código morto: Remova caminhos, flags e abstrações que não têm uso real; menos código significa menos superfície de manutenção.
3. Testes, Bugs e Feedback
- Rede de segurança: Testes automatizados aumentam a confiança para modificar código e detectar regressões cedo.
- Testes focados: Cada teste deve afirmar um comportamento claro, incluindo casos normais, falhas e limites.
- Depuração: Investigue bugs de modo sistemático, reduza o espaço de busca e preserve um caso reproduzível.
- Integração contínua: Execute build e testes frequentemente para detectar incompatibilidades e falhas de integração rapidamente.
4. Design e Complexidade
- Baixo acoplamento: Evite dependências rígidas que façam uma mudança local se espalhar por módulos não relacionados.
- Alta coesão: Mantenha responsabilidades que mudam juntas próximas e separe conceitos independentes.
- Generalidade: Não crie bibliotecas ou camadas genéricas apenas porque parecem elegantes; generalize quando houver consumidores e variação reais.
- Reutilização: Compare construir, reutilizar biblioteca existente ou comprar solução; avalie custo total, licença, integração e manutenção.
5. Profissionalismo e Trabalho em Equipe
- Revisão: Use revisão de código e programação em pares quando ajudarem a descobrir erros e compartilhar contexto.
- Dívida técnica: Uma correção emergencial pode ser pragmática, mas deve ser registrada e paga logo após a urgência.
- Licenças: Respeite licenças, autoria e propriedade intelectual de código reutilizado.
- Aprendizado: Amplie continuamente domínio técnico e de negócio, mas aplique técnicas novas apenas quando forem adequadas.
6. Como Usar com IA
Anexe este arquivo quando quiser que a IA implemente ou revise código com foco em legibilidade, manutenção e segurança de mudança. Peça que ela explique quais decisões reduzem complexidade, quais testes protegem a alteração e qual dívida técnica foi criada, se houver.
Diretrizes de Execução para IA
Ao criar, revisar ou reestruturar uma aplicação, garanta:
- Revele intenção: nomes, funções e módulos devem deixar claro o que o sistema faz.
- Mantenha alterações pequenas: evite reescritas amplas quando uma melhoria incremental resolver.
- Proteja mudanças com testes: valide comportamento normal, falhas e limites.
- Evite complexidade especulativa: abstraia somente variações reais.
- Deixe o código melhor: toda alteração deve preservar ou melhorar compreensão e manutenção.
Roteiro de Uso Operacional com IA
- Contextualize o projeto: informe domínio, stack, arquitetura atual, restrições e objetivo da mudança.
- Selecione o recorte: diga qual princípio/capítulo deste guia deve orientar a tarefa; não aplique tudo ao mesmo tempo.
- Peça diagnóstico antes do código: a IA deve identificar sintomas, riscos, dependências e alternativas.
- Defina critérios de aceite: comportamento, testes, acessibilidade, performance, segurança ou operação conforme o tema.
- Implemente incrementalmente: mudanças pequenas, reversíveis e verificadas.
- Faça revisão final: peça à IA que confronte a solução com este guia e liste desvios deliberados.
Prompt de aplicação
Use este guia como referência técnica para a tarefa abaixo.
Não copie regras mecanicamente. Primeiro diagnostique o problema e selecione apenas os princípios aplicáveis.
Mostre: (1) diagnóstico, (2) decisão, (3) implementação proposta, (4) testes/verificações, (5) trade-offs e (6) checklist final.
Contexto: [DESCREVA o sistema, stack, estado atual e cenário da mudança]
Objetivo: [DESCREVA o resultado esperado e o comportamento que deve existir]
Restrições: [DESCREVA limites de escopo, compatibilidade, segurança, prazo e o que não pode mudar]
Como preencher os campos
- Contexto: descreva o tipo de sistema, stack/versões, arquitetura atual, onde a mudança acontece e o comportamento relevante já existente.
- Objetivo: descreva o resultado observável que deve existir ao final, não apenas a tecnologia que você quer usar.
- Restrições: informe o que não pode mudar, compatibilidade, prazo, segurança, acessibilidade, performance, legado, dependências e limites de escopo.
Exemplo preenchido
Contexto: Aplicação interna mantida por três desenvolvedores, com JavaScript e API REST; há funções longas, nomes pouco claros e testes parciais.
Objetivo: Revisar o módulo de cadastro e propor melhorias pequenas que aumentem legibilidade, testabilidade e facilidade de manutenção.
Restrições: Preservar comportamento e contrato da API; não reescrever o módulo inteiro; cada alteração deve ser pequena e coberta por teste.