Um antigo sistema usado pelo Ipea para produzir gráficos soc...
Esse design original atendia bem às necessidades de geração de gráficos. Com o passar do tempo, entretanto, surgiram novas demandas sobre dados dos municípios, o que obrigou os desenvolvedores a inserir novas operações na classe Municipio. Essas mudanças produziram as seguintes alterações no design original:
Essas alterações trariam alguns efeitos colaterais, pois, como o acesso aos dados de um município é feito por meio de operações definidas na classe Estado, quanto mais solicitações sobre os municípios houver, maior será o número de operações inseridas na classe Estado, com o único intuito de prover dados sobre os municípios localizados nesses estados. Sendo assim, os desenvolvedores do Ipea refatoraram o código existente e produziram o seguinte design:
A partir de então, as solicitações de dados sobre os municípios para a geração de gráficos passaram a ser feitas diretamente aos objetos da classe Municipio, sem a intermediação da classe Estado.
Que refatoração foi aplicada?
Comentários
Veja os comentários dos nossos alunos
Remove Middle Man = Remover intermediário
Lembrei daquele ataque de segurança da informação: "Man-In-The-Middle (MITM)", onde o atacante é o "INTERMEDIÁRIO", entre a vítima e o servidor web.
A. Hide Delegate: Quando uma classe chama um método de outra classe, e essa chamada é usada externamente, pode ser útil esconder essa relação delegando a chamada diretamente para a classe chamada. Isso ajuda a simplificar a interface da classe principal e a reduzir o acoplamento entre as classes.
B. Remove Middle Man: Às vezes, uma classe serve apenas como um intermediário para passar chamadas para outra classe. Nesses casos, é mais eficiente e claro chamar diretamente a classe final, eliminando assim o intermediário desnecessário.
C. Replace Data Value with Object: Quando um dado simples precisa ser estendido com comportamento ou outras informações, é útil substituir esse dado por um objeto. Isso permite que você adicione métodos e campos à medida que a complexidade do dado aumenta.
D. Duplicate Observed Data: Esse é um padrão onde os dados são duplicados em várias classes para reduzir a necessidade de comunicação entre elas. Isso pode melhorar o desempenho, mas também pode aumentar a complexidade do código e a necessidade de manter os dados sincronizados.
E. Decomposing Methods: Refere-se a dividir um método grande e complexo em métodos menores e mais simples. Isso torna o código mais legível, fácil de entender e manter. Cada método menor pode se concentrar em uma única tarefa, facilitando a compreensão do funcionamento do método como um todo.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo