Fragmentação e visão do todo
Nesta aula
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.
| Pergunta | Artefato de consulta | Consequência para a decisão |
|---|---|---|
| Qual comportamento impede a regressão | pratica/tests/catalogo.test.mjs | O teste deve proteger a regra de visibilidade |
| Onde a decisão de catálogo está implementada | pratica/src/catalogo.mjs | Uma autoridade para essa regra |
| Como o navegador recebe o resultado | pratica/src/servidor.mjs e pratica/public/app.js | Conferir se a integração preserva a restrição |
| A regra foi duplicada em apresentação | Leitura dos consumidores e testes de servidor | Eliminar 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 S17Tente 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.