Pular para o conteúdo principal

Questão de Engenharia de Software — Desenvolvimento de Software — FGV 2024

Engenharia de SoftwareDesenvolvimento de Software
Código
fg084707
Banca
FGV
Órgão
EPE
Ano
2024
Nível
Superior
Cargo
Analista de Gestão Corporativa - Tecnologia da Informação (Soluções)
No contexto de desenvolvimento de software, code smells são sinais de possíveis problemas típicos no código.Sobre esse conceito, analise as afirmativas a seguir.I. Dividir métodos longos em partes menores pode ser uma solução para o caso de bloaters.II. Usar grupos idênticos de variáveis que se repetem ao longo do código pode melhorar a legibilidade e a consistência do código, sendo considerada uma boa prática.III. Recomenda-se refatorar o código quando um método acessa excessivamente os dados de outra classe, o que indica a presença do code smell conhecido como Feature Envy.Está correto o que se afirma em
  1. AI, apenas.
  2. BI e II, apenas.
  3. CI e III, apenas.
  4. DII e III, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoC — I e III, apenas.

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”.

Code Smells: Bloaters, Duplicação e Feature Envy

Gabarito: letra C (afirmativas I e III). A questão aborda code smells e boas práticas de refatoração. A afirmativa I descreve corretamente a solução para bloaters (métodos longos); a afirmativa III identifica corretamente o smell Feature Envy. Já a afirmativa II confunde repetição de código com boas práticas – na verdade, duplicação de variáveis é um anti-padrão.

Afirmativa

Conteúdo

Classificação

Justificativa

I

Dividir métodos longos em partes menores pode ser solução para bloaters

✅ Correta

Métodos longos são bloaters; a refatoração Extract Method é a solução padrão.

II

Usar grupos idênticos de variáveis repetidos melhora legibilidade

❌ Incorreta

Isso é duplicação de código (anti-padrão), não boa prática; prejudica manutenção.

III

Refatorar quando um método acessa excessivamente dados de outra classe (Feature Envy)

✅ Correta

Feature Envy é o smell descrito; a refatoração move o método para a classe dona dos dados.

1Bloaters
Método longo
Solução: Extract Method
2Feature Envy
Método acessa dados de outra classe
Solução: mover método
3Duplicated Code
Grupos de variáveis repetidos
Prejudica manutenção
Code smells
LEVELsoulevel.com.br
Code smells: Bloaters (Método longo, Solução: Extract Method); Feature Envy (Método acessa dados de outra classe, Solução: mover método); Duplicated Code (Grupos de variáveis repetidos, Prejudica manutenção)

Afirmativa I — ✅ Correta

Métodos longos (long methods) são um tipo de bloater, uma categoria de code smells onde o código cresce excessivamente. A refatoração mais comum é extrair trechos em métodos menores (Extract Method), melhorando legibilidade e manutenção. Portanto, a afirmativa está correta.

Afirmativa II — ❌ Incorreta

Repetir os mesmos grupos de variáveis em vários lugares do código constitui duplicação de código, um code smell conhecido como Duplicated Code. Isso prejudica a manutenção: qualquer alteração precisa ser replicada em todos os pontos. Não é uma boa prática; a boa prática é abstrair esses grupos em uma estrutura única (ex.: classe ou tupla) e reutilizá-la.

NÃO CAIA NESSA!

A banca inverte o sinal – afirma que repetir variáveis melhora legibilidade, quando na verdade piora. Cuidado: duplicação nunca é recomendada.

Afirmativa III — ✅ Correta

Feature Envy é um code smell que ocorre quando um método de uma classe está mais interessado nos dados de outra classe do que nos seus próprios. O sintoma é o excesso de chamadas a getters e setters de outra classe. A refatoração recomendada é mover o método (ou parte dele) para a classe que possui os dados, aumentando a coesão. A afirmativa está perfeitamente alinhada com a definição clássica de Martin Fowler.

Portanto, estão corretas apenas as afirmativas I e III, o que corresponde à letra C.

Link permanente: /questoes/fg084707