Padrões de qualidade do código


Saiba mais sobre recursos e otimização de custo bem arquitetados → Organização de código

Essa página de padrão consolidado abrange as práticas de qualidade e manutenção de código para otimização de recurso. Inclui orientação sobre decisões de código padrão vs. personalizado, gerenciamento de débito técnico, padrões de design, práticas de documentação e governança. Esses padrões ajudam a manter a velocidade de desenvolvimento, reduzir as taxas de defeito e permitir a sustentabilidade de soluções de longo prazo.

Padrões

Onde procurarQual é a boa aparência
Desempenho em escala✅ O teste valida se as soluções declarativas atendem aos requisitos de desempenho em volumes de dados projetados. O teste de carregamento no Full Copy Sandbox com dados realistas confirma a escalabilidade antes da implementação da produção.
Análise de capacidade de manutenção✅ A análise de TCO compara a carga de manutenção de longo prazo de abordagens declarativas vs. personalizadas, incluindo esforço de atualização, requisitos de teste e requisitos de habilidades para equipes futuras.
Arquitetura de abordagem mista✅ As soluções combinam abordagens declarativas e programáticas quando apropriadas. O fluxo orquestra lógica de alto nível, enquanto o Apex lida com cálculos complexos. Campos de fórmula calculam derivações simples enquanto o Apex processa operações em massa.
Avaliação do AppExchange✅ Antes de criar código personalizado, avalie pacotes existentes do AppExchange que fornecem funcionalidades semelhantes. Resultados da avaliação do documento, incluindo pacotes revisados, lacunas de funcionalidade e comparação de TCO.

Padrões

Onde procurarQual é a boa aparência
Visibilidade de pendências✅ Itens de débito técnico rastreados em pendências com rótulos claros, contexto explicando por que o código precisa de melhoria, impacto comercial de deixá-lo sem solução e esforço estimado de remediação. O débito invisível não pode ser priorizado nem gerenciado.
Melhoria incremental✅ Regra Boy Scout aplicada durante o desenvolvimento de recursos: deixar código melhor que encontrado. As equipes remediam o débito incrementalmente durante o trabalho de recursos relacionados, em vez de exigir grandes projetos de refatoramento dedicados. As análises de código verificam melhorias incrementais.
Prevenção sobre remediação✅ Os portões de qualidade em CI/CD aplicam padrões antes de o código chegar à produção. Scanner de código, ApexGuru e métricas de complexidade integradas à validação de solicitação de pull. Bloquear problemas impede a mesclagem até ser resolvida.

Antipadrões

Onde procurarQual é a aparência ruim
Gerenciamento de pendências⚡️ Dívida técnica confirmada verbalmente, mas nunca rastreada em pendências. Nenhuma visibilidade do acúmulo de débito. A remediação da dívida sempre adiada em favor do trabalho do recurso. O Velocity diminui gradualmente, as equipes não podem explicar por quê.
Desvio de gate de qualidadePortões de qualidade de CI/CD frequentemente ignorados sob pressão de agenda com intenção de corrigir mais tarde. “Mais tarde” nunca acontece. Falhas do leitor de código marcadas como problemas conhecidos e ignoradas. Limites de complexidade elevados para acomodar implementações ruins.
Sem capacidade de remediação100% da capacidade de sprint alocada para trabalho de recurso com capacidade zero para remediação de débito técnica. O débito se acumula indefinidamente. Principais projetos de refatoramento exigiram 18 a 24 meses consumindo trimestres inteiros.
Dívido de configuraçãoTipos de metadados personalizados e configurações personalizadas são acumulados sem limpeza. A configuração não utilizada persiste indefinidamente. A produção tem 50 registros de metadados, sendo que apenas 12 são realmente usados. Nenhuma documentação explicando o propósito dos valores de configuração.

Padrões

Onde procurarQual é a boa aparência
Arquitetura do acionador✅ Padrão do manipulador do acionador aplicado de modo consistente: acionadores finos são delegados às classes de manipulador, as classes de manipulador organizam a lógica pelo contexto do acionador (antes de inserir, após a atualização), os nomes de métodos claros revelam o propósito. Nenhuma lógica de negócios nos arquivos de acionador em si.
Implementação da camada de serviço✅ Lógica de negócios encapsulada em classes de serviço separadas de controladores, acionadores e pontos de entrada em lote. Classes de serviço reutilizáveis em vários pontos de entrada sem duplicação. Limpe a convenção de nomenclatura (AccountService, OrderProcessor).
Padrão do seletor✅ Consultas SOQL centralizadas em classes seletoras por objeto (AccountSelector, OpportunitySelector). Os métodos seletores retornam conjuntos de campos consistentes. Alterações de otimização de LDV aplicadas uma vez, afetando todas as consultas.
Padrão do repositório✅ Acesso a dados extraído atrás de interfaces que permitem testes com origens de dados simuladas. As implementações de repositório encapsulam estratégias de construção de consulta, armazenamento em cache e otimização. A lógica de negócios depende de interfaces de repositório, não de implementações concretas.
Padrões de design de componente✅ Componentes da Web do Lightning seguem o princípio da responsabilidade única, expõem propriedades para configuração, emitem eventos para comunicação pai, projetados para composição e reutilização. Biblioteca de componentes documentada com exemplos de uso.
Organização de código✅ Estrutura de pacote lógica agrupa classes relacionadas. Limpe a separação entre lógica de domínio, acesso a dados, pontos de extremidade da API e adaptadores de integração. As dependências do pacote fluem em uma direção.

Antipadrões

Onde procurarQual é a aparência ruim
Acionadores⚡️ Toda a lógica de negócios integrada diretamente a arquivos de acionador com condições profundamente aninhadas, sem separação de preocupações, sem classes de manipulador. Mais de 300 arquivos acionadores de linha misturando validação, lógica de negócios e chamadas de integração. Não é possível testar de modo eficaz.
Consulta em loop⚡️ Consultas SOQL executadas em loops de iteração. Trabalha com pequenos volumes de dados, mas viola o limite de consultas SOQL 100 ao processar operações em massa. Descoberto apenas quando acionadores são disparados em cargas de dados em massa na produção.
DML em loopDeclarações DML (inserir, atualizar, excluir) executadas em loops de iteração. Viola o limite de instruções DML 150 com operações em massa. Cada registro processa em uma transação de banco de dados separada em vez de um processamento em massa eficiente.

Padrões

Onde procurarQual é a boa aparência
Registros de decisão de arquitetura✅ Decisões arquitetônicas significativas documentadas em ADRs armazenados no controle de versão. Os ADRs capturam o contexto (acionadores de negócios, restrições técnicas), a decisão (o que foi escolhido), as alternativas consideradas (por que foram rejeitadas) e as consequências (negócios, condições para revisitação).