No âmbito da Refatoração de software, analise as afirmativas...
I - Introduce Parameter Object é uma técnica de refatoração que pode ser aplicada em métodos muito longos.
II - Código duplicado é candidato para aplicação das técnicas Extract Method e Substitute Algorithm.
III - Extract Class é uma técnica de refatoração que pode ser aplicada em classes muito grandes.
Está(ão) correta(s) a(s) afirmativa(s)
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - I, II e III.
No contexto da refatoração de software, as três afirmativas abordam diferentes técnicas utilizadas para melhorar a estrutura do código sem alterar seu comportamento externo. É uma prática fundamental para manter a qualidade do software ao longo do tempo e facilitar a manutenção e compreensão do código. Vamos analisar cada uma das afirmativas:
Afirmativa I: "Introduce Parameter Object" é uma técnica de refatoração que consiste em substituir um grupo de parâmetros por um objeto que represente todo esse grupo. Isso ajuda a simplificar a assinatura de métodos, promovendo um maior entendimento e organização do código, especialmente em métodos muito longos com muitos parâmetros.
Afirmativa II: O "código duplicado" é um problema comum em bases de código e pode levar a inconsistências e dificuldades de manutenção. As técnicas Extract Method, que envolve mover um fragmento de código para um novo método, e Substitute Algorithm, que troca um algoritmo inteiro por um mais claro ou eficiente, são estratégias efetivas para eliminar a duplicação e melhorar a clareza do código.
Afirmativa III: A técnica de Extract Class é aplicada quando uma classe começa a ficar muito grande e com muitas responsabilidades. Neste caso, parte de sua funcionalidade pode ser movida para uma nova classe, ajudando a manter cada classe mais focada, compreensível e gerenciável.
Todas essas técnicas contribuem para a melhoria da qualidade do código e a manutenção da saúde do software, razão pela qual a alternativa E está correta, pois todas as afirmativas I, II e III estão corretas no contexto da refatoração.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Alguém poderia me explicar essa questão?
O Parameter Object, pelo que pesquisei, agrega todos os parâmetros de um método em uma classe.
Na afirmativa I, caberia a técnica Extract Method, que cria um novo método extraindo um bloco de código.
I - Introduce Parameter Object, em seu uso, cria-se uma classe imutável que represente o grupo de parâmetros de um ou mais métodos. O que valida a questão é que algumas vezes no corpo do método há estrutras/comportamento usados exclusivamente para manipular os parâmetros. Esses comportamentos podem ser movidos para o objeto de parâmetros.
Fonte: Introduce Parameter Object
II -
Introduce Parameter Object é uma tecnica usada quando metodos possuem LISTAS DE PARAMETROS muito longos. E nao métodos longos.
Na explicação sobre os refactorings que podem ser usados em métodos muito longos (pag 77, Refactoring, Fowler) ele explica que:
Quando é utilizado o Extract Method, em métodos muito longos, pode ocorrer desse novo método possuir muitos parâmetros e variáveis temporárias como parâmetros fazendo com que a chamada do método extraído fique tão confusa quanto originalmente. Nesses casos ele sugere o uso de Replace Temp With Query, Introduce Parameter Object e Preserve Whole Object.
Um bom lugar para consulta rápida dos padrões é: http://refactoring.com/catalog/
Existe uma descrição e um exemplo de utilização do padrão.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo