Pular para o conteúdo principal

Questão de Arquitetura de Software — REFATORAÇÃO — FURB 2024

Arquitetura de SoftwareREFATORAÇÃO
Código
qg190320
Banca
FURB
Órgão
Câmara de Brusque - SC
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Durante o desenvolvimento de software, a refatoração de código é uma prática importante para melhorar a estrutura e a qualidade sem alterar o comportamento externo. Com base nos conceitos de refatoração em direção à herança, assinale a seguir o principal benefício de aplicar esse processo em um código com classes duplicadas:
  1. AReduzir a duplicação de código, reorganizando métodos em superclasses e subclasses, mantendo a lógica original e facilitando a manutenção.
  2. BSubstituir o uso de condicionais complexos por múltiplos métodos, mesmo que isso aumente o número de classes. Como resultado da refatoração, teremos um código de mais difícil entendimento, porém mais fácil de manter.
  3. CEliminar a necessidade de refatoração futura, consolidando toda a lógica da aplicação em um único ponto central.
  4. DGarantir que todas as funcionalidades sejam agrupadas em uma única classe principal, eliminando a necessidade de métodos abstratos.
  5. EForçar o desenvolvedor a implementar um padrão de projeto específico desde o início para evitar futuras modificações na estrutura de classes.
Revelar gabarito e comentário

GabaritoA — Reduzir a duplicação de código, reorganizando métodos em superclasses e subclasses, mantendo a lógica original e facilitando a manutenção.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Refatoração em direção à herança

Gabarito: letra A. A refatoração para herança, como a extração de superclasse ou subida de método, tem como principal benefício a redução da duplicação de código, reorganizando métodos comuns em superclasses e subclasses, mantendo o comportamento externo inalterado e facilitando a manutenção. Esse conceito está alinhado com a prática de refatoração descrita por Martin Fowler, que visa eliminar bad smells como código duplicado.

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa descreve exatamente a finalidade da refatoração em direção à herança quando há classes duplicadas: reduzir duplicação movendo a lógica comum para superclasses e subclasses, preservando a semântica original do código e tornando a manutenção mais simples e segura.

Alternativa B — ❌ Incorreta

Embora a substituição de condicionais complexos por polimorfismo seja uma refatoração válida, a alternativa erra ao afirmar que o resultado é um código "mais difícil de entender". A refatoração sempre visa melhorar a legibilidade e a estrutura; um código polimórfico bem aplicado é, em geral, mais claro e mais fácil de manter, não o contrário. Além disso, a questão trata especificamente de classes duplicadas, e não de condicionais.

Alternativa C — ❌ Incorreta

Refatoração não elimina a necessidade de refatorações futuras; é um processo contínuo de melhoria. Consolidar toda a lógica em um único ponto central viola os princípios de coesão e separação de responsabilidades, criando um god class — o oposto do que se busca com herança.

Alternativa D — ❌ Incorreta

Agrupar todas as funcionalidades em uma única classe principal é o oposto da refatoração para herança, que justamente distribui responsabilidades em uma hierarquia. Métodos abstratos são frequentemente utilizados para definir contratos em superclasses, e sua eliminação não é um benefício desejável — pelo contrário, eles promovem flexibilidade.

Alternativa E — ❌ Incorreta

Refatoração não "força" a implementação de um padrão de projeto desde o início; ela pode ser aplicada a qualquer momento para melhorar o código existente. Padrões de projeto podem surgir como resultado da refatoração, mas não são um requisito prévio.

Gabarito: letra A.

Link permanente: /questoes/qg190320