Questão nº 77
Questão de TI - Soluções · FGV EPE 2024 (nº 77)
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
- AI, apenas.
- BI e II, apenas.
- CI e III, apenas. (alternativa correta)
- DII e III, apenas.
- EI, II e III.
Resposta comentada
Gabarito Alternativa C
Code Smells são como "cheiros ruins" no código-fonte de um programa. Eles não são erros que impedem o programa de funcionar, mas são sinais de que há problemas de design ou estrutura que podem tornar o código difícil de entender, manter ou modificar no futuro.
- (A) Incorreta: A afirmativa I está correta, mas a alternativa A indica que apenas I está correta, o que não é verdade, pois a III também está.
- (B) Incorreta: A afirmativa I está correta, mas a II está incorreta.
- (C) Correta: A afirmativa I está correta porque bloaters são elementos de código que cresceram demais (como métodos longos), e dividi-los é uma refatoração comum. A afirmativa III está correta porque Feature Envy (inveja de funcionalidade) ocorre quando um método usa excessivamente dados de outra classe, e a refatoração é recomendada para mover a lógica para onde os dados residem.
- (D) Incorreta: A afirmativa II está incorreta.
- E) Incorreta: As afirmativas I e III estão corretas, mas a II está incorreta.
Comentário sobre as alternativas:
-
I. Dividir métodos longos em partes menores pode ser uma solução para o caso de bloaters.
- Correta. Um método longo é um exemplo clássico de bloater (algo que "inchou" demais). Dividi-lo em métodos menores e mais focados é uma técnica fundamental de refatoração para melhorar a legibilidade e a manutenibilidade do código.
-
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.
- Incorreta. Esta afirmativa descreve um code smell conhecido como Duplicated Code (código duplicado) ou, se as variáveis estiverem sempre juntas, Data Clumps (aglomerados de dados). Duplicar código ou grupos de variáveis não melhora a legibilidade ou a consistência; pelo contrário, torna o código mais difícil de manter (qualquer alteração precisa ser feita em múltiplos locais) e propenso a erros. A boa prática é evitar a duplicação, encapsulando esses grupos de variáveis em uma classe ou usando funções/métodos para evitar repetição de lógica.
- Armadilha da banca: A armadilha aqui é usar termos positivos como "melhorar a legibilidade e a consistência" e "boa prática" para descrever algo que é, na verdade, um problema de design. O aluno desatento pode associar "consistência" (já que os grupos são idênticos) com algo positivo, ignorando o problema fundamental da duplicação.
-
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.
- Correta. Feature Envy (inveja de funcionalidade) é exatamente isso: um método de uma classe que parece "invejar" as funcionalidades ou os dados de outra classe, acessando-os excessivamente. A refatoração recomendada é mover esse método (ou parte dele) para a classe cujos dados ele mais utiliza, seguindo o princípio da coesão.
Fonte: FGV EPE 2024 Analista de Gestão Corporativa - TI - Soluções (Caderno Tipo 1). Reproduzida para fins de estudo.