Refatoração, POO e Boas Práticas de Código
Classificado em Computação
Escrito em em
português com um tamanho de 5,35 KB
Pacotes
Pacotes são criados para organizar o código e evitar conflitos entre classes com o mesmo nome, facilitando a localização do código.
Característica usada
Pergunta: Principalmente qual característica do paradigma Orientado a Objetos foi usada nesse exemplo?
Resposta: O uso de interface: um contrato que define como a classe deve se comportar. As classes que implementam uma interface são obrigadas a implementar os métodos declarados na interface.
Programar para interfaces x classes
Pergunta: Qual é a diferença entre programar para interfaces e programar para classes concretas? Há algum princípio de projeto aplicado nesse contexto?
Resposta: Programar para interfaces significa depender de contratos em vez de implementações concretas. Isso torna o código mais flexível e mais fácil de alterar no futuro caso as regras mudem. Programar para classes concretas tende a gerar maior acoplamento, dificultando mudanças. O princípio aplicado é "programar para uma interface, não para uma implementação" (relacionado ao Princípio de Inversão de Dependência).
Arquitetura e padrão
Pergunta: No que se refere à arquitetura da aplicação (divisão de camadas), explique como ficou separada a aplicação. É possível abstrair algum padrão de projeto nesse sentido?
Resposta: Há uma camada cliente ou interface (
TesteOperacoes), uma fachada (Operacoes) que faz a ligação entre a camada de negócio e a camada cliente, e a camada de negócio (IOperacoes,Soma,Produto). Sim — é possível identificar o padrão Facade (fachada).Desvantagens da herança
Pergunta: Com relação à herança, há desvantagens em usá-la? Justifique.
Resposta: Sim. A herança pode causar alto acoplamento: subclasses herdam atributos e comportamentos que podem não ser necessários, o que aumenta a fragilidade e reduz a flexibilidade do sistema.
Uso de Calendar.getInstance()
Pergunta: Explique o código:
calendario = Calendar.getInstance();Resposta:
Calendaré uma classe abstrata da API padrão do Java; portanto não pode ser instanciada diretamente. Para obter uma implementação concreta é usado o método estáticoCalendar.getInstance(), que retorna uma instância adequada.Método estático
Pergunta: O que é um método estático?
Resposta: É um método que pode ser chamado a partir da classe, sem a necessidade de criar um objeto para executá‑lo.
Coesão após refatoração
Pergunta: Em termos de coesão os métodos gerados após a refatoração foram devidamente bem implementados? Justifique.
Resposta: Sim. Após a refatoração, cada método tem uma única responsabilidade: por exemplo, um método concentra-se em uma operação específica e outro trata apenas da impressão dos dados. Os métodos apresentam alta coesão e respeitam o Princípio da Responsabilidade Única (Single Responsibility Principle).
Quando aplicar extração de método
Pergunta: Quando deve ser usada a refatoração de extração de método?
Resposta: A extração de método deve ser aplicada quando há duplicação de código ou quando operações são muito longas e podem ser divididas em responsabilidades menores para melhorar legibilidade e reutilização.
Refatorar criando novos métodos
Pergunta: É possível refatorar um método existente criando outro(s) método(s) a partir deste? Quando isso deve ser implementado?
Resposta: Sim. Deve-se extrair novos métodos quando um método executa várias responsabilidades e é muito extenso; isso melhora a legibilidade, a testabilidade e a manutenibilidade.
Constantes e variáveis locais
Pergunta: Por que refatorar trechos de códigos de modo a criar constantes e variáveis locais?
Resposta: Para facilitar a manutenção e melhorar a legibilidade do código, tornando valores significativos mais explícitos e reduzindo repetições.
Extração sugerida na questão 15
Pergunta: Por que foi sugerida a refatoração de extração de método na questão 15?
Resposta: Para reduzir a responsabilidade do método
maine melhorar a organização e clareza do código.Definição de refatoração
Pergunta: Definir refatoração.
Resposta: Refatoração é o processo de modificar um sistema para melhorar a estrutura interna do código sem alterar seu comportamento externo.
Refatorações de formatação
Pergunta: Quais foram as refatorações correspondentes à formatação do código?
Resposta: Foi necessária a indentação do código, que estava sem formatação adequada, além de ajustes de espaçamento vertical entre trechos de código para melhorar a legibilidade.