Pular para o conteúdo principal

Questão de Engenharia de Software — Refatoração — INSTITUTO AOCP 2023

Engenharia de SoftwareRefatoração
Código
qq971003
Banca
INSTITUTO AOCP
Órgão
IF-MA
Ano
2023
Nível
Superior
Cargo
Analista De Tecnologia Da Informação - Desenvolvimento De Sistemas
Em relação ao refactoring no contexto de testes de software, assinale a alternativa que apresenta uma prática recomendada para garantir a qualidade e a manutenibilidade do código.
  1. ARealizar refactoring apenas quando houver bugs no código, ignorando a legibilidade e a estrutura.
  2. BEvitar o uso de testes automatizados, pois podem atrasar o processo de refactoring.
  3. CRealizar refactoring apenas no início de um projeto de desenvolvimento de software, antes de adicionar novas funcionalidades.
  4. DFazer refactoring sem executar testes após as mudanças, pois o processo de refactoring não deve alterar o comportamento do código.
  5. ERealizar refactoring em pequenos passos, garantindo que os testes continuem passando após cada mudança.
Revelar gabarito e comentário

GabaritoE — Realizar refactoring em pequenos passos, garantindo que os testes continuem passando após cada mudança.

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 e Testes de Software

Gabarito: letra E. A prática recomendada para garantir qualidade e manutenibilidade durante o refactoring é realizar mudanças em pequenos passos, executando os testes após cada alteração para assegurar que o comportamento externo do código permaneça inalterado. Essa é a essência do refactoring: melhorar a estrutura interna sem modificar a funcionalidade, e os testes automatizados são o instrumento que valida essa premissa.

Refatoração (ou refactoring) é o processo de modificar um sistema de software para melhorar sua estrutura interna sem alterar seu comportamento externo. O objetivo é aprimorar o design, aumentar a legibilidade e facilitar a manutenção, reduzindo a chamada dívida técnica. O termo foi popularizado por Martin Fowler no livro "Refactoring: Improving the Design of Existing Code", que descreve diversas técnicas, como extrair método, renomear variável e simplificar condicionais.

A regra de ouro da refatoração é que ela não adiciona funcionalidades — apenas reorganiza o código existente. Por isso, é fundamental que o sistema possua uma suíte de testes automatizados antes de iniciar qualquer refatoração. Esses testes funcionam como uma rede de segurança: se, após uma mudança, algum teste falhar, o desenvolvedor sabe imediatamente que o comportamento foi alterado de forma indesejada. Sem testes, é impossível garantir que a refatoração não introduziu bugs.

Na prática, a refatoração deve ser feita em pequenos passos incrementais. Em vez de reescrever grandes blocos de código de uma só vez, o desenvolvedor aplica uma transformação pequena e segura, executa os testes, e só então prossegue para a próxima mudança. Esse ciclo — mudar, testar, verificar — é o que minimiza riscos e mantém o código sempre em um estado funcional. Essa prática é tão importante que é uma das doze práticas do Extreme Programming (XP), metodologia ágil que valoriza a melhoria contínua do código.

A banca explora exatamente a confusão entre refatoração e outras atividades de desenvolvimento. Muitos candidatos pensam que refatorar é "reescrever o código para adicionar funcionalidades" ou que pode ser feito sem testes, mas isso contraria o conceito fundamental. A alternativa correta é a que reflete a prática disciplinada: pequenos passos com verificação contínua por meio de testes.

  1. 1Mudança pequena
  2. 2Executar testes
  3. 3Verificar comportamento
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Realizar refactoring apenas quando houver bugs, ignorando legibilidade e estrutura, é o oposto do que a prática recomenda. A refatoração é uma atividade contínua de melhoria do código, não uma correção reativa de defeitos. Ela deve ser aplicada sempre que o código apresentar "bad smells" (maus cheiros), como duplicação, métodos longos ou acoplamento excessivo, independentemente da existência de bugs. Ignorar a legibilidade e a estrutura é justamente o que a refatoração combate.

Alternativa B — ❌ Incorreta

Evitar testes automatizados é um erro grave. Os testes são o pré-requisito essencial para a refatoração segura, pois garantem que o comportamento externo não foi alterado. Sem eles, qualquer mudança estrutural pode introduzir defeitos silenciosos. A afirmação inverte a relação: testes não atrasam o processo; eles o viabilizam.

Alternativa C — ❌ Incorreta

A refatoração não é uma atividade restrita ao início do projeto. Ela deve ser aplicada ao longo de todo o ciclo de vida do software, sempre que houver necessidade de melhorar a estrutura do código. Adiar a refatoração para o início do projeto ignora que o código evolui e se deteriora com o tempo, acumulando dívida técnica. A prática recomendada é refatorar continuamente, em pequenos incrementos.

Alternativa D — ❌ Incorreta

Fazer refactoring sem executar testes após as mudanças é arriscado e contrário à boa prática. Embora a refatoração não deva alterar o comportamento externo, é impossível garantir isso sem testes. A execução dos testes é exatamente o mecanismo que valida a premissa de que o comportamento permaneceu inalterado. A alternativa tenta justificar a ausência de testes com um argumento teórico, mas na prática os testes são indispensáveis.

Alternativa E — ✅ Correta ⟵ GABARITO

Realizar refactoring em pequenos passos, garantindo que os testes continuem passando após cada mudança, é a prática recomendada. Esse ciclo incremental — mudar, testar, verificar — minimiza riscos, mantém o código sempre funcional e permite detectar imediatamente qualquer alteração indesejada de comportamento. É exatamente o que a literatura e as metodologias ágeis, como o XP, preconizam.

Gabarito: letra E

Link permanente: /questoes/qq971003