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

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

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

  3. 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).

  4. 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).

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

  6. 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ático Calendar.getInstance(), que retorna uma instância adequada.

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

  8. 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).

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

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

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

  12. 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 main e melhorar a organização e clareza do código.

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

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

Entradas relacionadas: