AULA 50 / 61 · ACESSO GRATUITO

Fragmentação e visão do todo

Graciliano TolentinoEngenharia Caracol · Edição 2.0
Nesta aula
  1. Uma fronteira precisa facilitar uma mudança
  2. Caso trabalhado de navegação
  3. Procedimento de avaliação
  4. Critério contextual em vez de número mágico
  5. Erros e reparos específicos
  6. Exercício com solução

Uma fronteira precisa facilitar uma mudança

Coesão é a relação entre responsabilidades que fazem sentido juntas. Acoplamento descreve a dependência entre partes. Um arquivo curto pode depender de tantos outros que se torna difícil compreender uma alteração; um arquivo longo pode misturar interface, regra e persistência e tornar qualquer correção arriscada. A quantidade de arquivos e linhas ajuda a localizar suspeitas, mas não decide uma arquitetura.

A pergunta operacional é quais partes precisam mudar juntas para uma capacidade continuar correta. Na Oficina Caracol, a regra de exibição do catálogo pertence a pratica/src/catalogo.mjs; a reserva simulada, a pratica/src/operacoes.mjs; o protocolo HTTP, a pratica/src/servidor.mjs; a apresentação do navegador, a pratica/public/app.js. Essa divisão expressa responsabilidades. Ela precisa ser confirmada pela leitura do pacote, pois um nome de arquivo não prova o conteúdo.

Caso trabalhado de navegação

Considere uma revisão didática de REQ-002: um registro inativo não pode aparecer no catálogo público. O mantenedor começa pelo teste desse comportamento, localiza a regra de catálogo e examina o caminho usado pelo servidor. Não deve precisar corrigir cópias da regra em três lugares. A tabela mostra um mapa de investigação, e não resultados já obtidos nesta página.

PerguntaArtefato de consultaConsequência para a decisão
Qual comportamento impede a regressãopratica/tests/catalogo.test.mjsO teste deve proteger a regra de visibilidade
Onde a decisão de catálogo está implementadapratica/src/catalogo.mjsUma autoridade para essa regra
Como o navegador recebe o resultadopratica/src/servidor.mjs e pratica/public/app.jsConferir se a integração preserva a restrição
A regra foi duplicada em apresentaçãoLeitura dos consumidores e testes de servidorEliminar competição sem quebrar a defesa necessária

Se a interface também filtra dados por conveniência, isso não autoriza enviar informações restritas ao navegador. A responsabilidade de não revelar o registro deve ser protegida na fronteira pública. Consolidar cópias de lógica é diferente de remover verificações complementares de fronteira. O mapa precisa explicar essa distinção para evitar uma refatoração que pareça limpa e amplie a exposição.

Procedimento de avaliação

  • Escolha uma mudança real ou uma regressão conhecida. Avaliar uma árvore abstrata sem objetivo favorece reorganizações cosméticas.
  • Anote o percurso de leitura: teste, regra, consumidor e dados. Conte apenas as transições relevantes e escreva por que cada uma foi necessária.
  • Examine o histórico disponível para descobrir partes que mudam juntas. Mudanças conjuntas são indício de relação, não prova automática de que tudo deve morar no mesmo módulo.
  • Proponha uma fronteira que reduza responsabilidades misturadas ou autoridades duplicadas. Nomeie o que ela recebe e o que devolve.
  • Altere em pequena escala e execute as verificações aplicáveis. Atualize o mapa quando ele deixar de representar o código.

Critério contextual em vez de número mágico

O gate exige que outra pessoa consiga explicar o caminho obrigatório do requisito, localizar a autoridade da regra e fazer a alteração prevista com testes pertinentes. Se o grupo adotar um limite de navegação, deve registrar a tarefa, o percurso anterior e o motivo do limite. Não existe aqui uma regra universal de três arquivos ou cem linhas. A comparação útil é entre percursos equivalentes e compreensíveis, preservando o comportamento.

Erros e reparos específicos

  • Criar um arquivo para cada expressão espalha uma única responsabilidade. Reparo: reunir elementos que formam um contrato coeso e manter nomes que expliquem sua função.
  • Mover código sem procurar seus consumidores deixa uma fronteira aparente. Reparo: mapear importações, rotas e testes antes de concluir a mudança.
  • Unificar regras semelhantes com contratos diferentes cria uma abstração enganosa. Reparo: explicitar as diferenças e compartilhar apenas o que realmente possui o mesmo significado.

Exercício com solução

Dados: a regra de serviço ativo está copiada em catalogo.mjs e app.js; servidor.mjs envia todos os registros; somente um teste de interface verifica que os inativos ficam invisíveis. O que corrigir primeiro?

Ver solução comentada

Solução comentada: corrigir a fronteira pública para que registros inativos não sejam enviados, proteger essa restrição com teste pertinente e fazer a apresentação consumir o contrato público. Depois, avaliar se o filtro da interface ainda possui função de defesa ou apenas duplica uma regra. A resposta não recebe aprovação se apenas esconder o cartão, porque o dado ainda seria entregue. A rubrica exige autoridade identificada, proteção da fronteira, teste de regressão e mapa atualizado.

Fontes relacionadas

Consulte os limites e as seções de apoio de cada referência.

S07 S17
Conseguiu explicar o que aprendeu?

Tente o exercício antes de consultar a solução. Marque a aula para organizar sua leitura.

A conclusão desta leitura não equivale a certificação ou aceite de um projeto real. Teste os exemplos no escopo indicado e registre as limitações.