Voltar

Não crie o componente reutilizável ainda: espere o padrão se repetir

Aprofundamento CEVIU

Aprofundamento

O texto parte de um caso concreto: três fluxos de "item action" (aprovação, alteração e movimentação de itens) que tinham a mesma cara na interface, com lista, seleção, confirmação e resultado, mas comportamentos distintos. Aprovar é uma afirmação sobre o futuro, alterar acontece na hora, e mover depende de outro sistema que pode rejeitar o pedido. Ao unificar tudo num componente só, cada diferença virou uma flag. Mudar a confirmação passou a exigir acordo dos três responsáveis, de um revisor que conhecesse todos os modos e de testes para cada combinação de modo e variante.

A regra proposta é esperar o padrão aparecer três vezes pelo mesmo motivo de mudança. O teste do autor: se esse requisito mudar, quem eu consulto, e todas as cópias mudam juntas? Se a resposta varia por cópia, é coincidência, não duplicação. Formatador de data entra na extração, botões de envio de donos diferentes não. Devem ser compartilhados desde o início primitives estáveis (botões, text inputs, layout containers), design tokens, comportamento de acessibilidade (focus trapping em diálogos, navegação por teclado, labelling) e tudo guiado por padrão externo (datas, formatação de moeda, clientes de protocolo). O cheiro de abstração prematura aparece na lista de props: children, size, tone descrevem o que renderizar; mode, variant, isSpecial descrevem a situação. Para desfazer, faça inline do módulo em cada chamada, remova os ramos não usados e só depois extraia pedaços pequenos que mudam pelo mesmo motivo. O autor cita a regra de três atribuída a Don Roberts (no Refactoring, de Martin Fowler), Sandi Metz (The Wrong Abstraction) e a AHA programming de Kent C. Dodds.

Por que isso importa

Para quem mantém um design system ou uma base de componentes, a leitura é que a revisão de props vira um critério prático de code review. Se a API cresce em flags de contexto, o custo de coordenação entre times já está subindo, e o inline pode sair mais barato do que mais um modo.

Perguntas frequentes

O que é a regra de três para componentes?

Na primeira vez que o código se repete, você apenas copia. Na segunda, você incomoda-se mas copia de novo. Na terceira, refatora. O artigo acrescenta uma condição: as três ocorrências precisam mudar pelo mesmo motivo.

Como saber se uma abstração é prematura?

Leia a lista de props. Se ela descreve o que renderizar (children, size, tone), tende a estar saudável. Se descreve a situação (mode, variant, isSpecial), provavelmente você juntou fluxos parecidos que têm donos e motivos de mudança diferentes.

O que vale compartilhar desde o início?

Primitives estáveis como botões, inputs e containers de layout, design tokens, comportamento de acessibilidade e utilitários guiados por padrões externos, como datas, moeda e clientes de protocolo. São formas definidas fora da sua especulação sobre o futuro.

Como desfazer uma abstração errada?

Faça inline do módulo comum em cada fluxo e remova os ramos que cada um nunca usa. Depois, separe o código por fluxo e extraia só as peças pequenas que de fato mudam pelo mesmo motivo, como tabela ou formatadores de data.

Fontes

Avalie este artigo:
Categoria
CEVIU Web Dev
Publicado
06 de novembro de 2026
Editoria
CEVIU Web Dev

Quer receber mais sobre CEVIU Web Dev?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser