Exercício 1.4: Resolvendo um Problema Estrutural
Este exercício assume que você tenha concluído o Exercício 1.1: Importando os Recursos Obrigatórios. No Exercício 1.4, você lê primeiro um cenário do usuário. Em seguida, você assume a função de engenheiro de software, descrita no cenário do usuário, e utiliza o projeto importado no Exercício 1.1 para concluir o exercício.
Cenário do Usuário
Para verificar o código especificamente para dependências cíclicas, o engenheiro executa uma revisão de código de análise estrutural que procura somente essas dependências. A revisão de código localiza algumas dependências cíclicas e o engenheiro nota que as correções rápidas existem para algumas delas. Uma correção rápida é uma maneira automatizada fornecida para reparar uma descoberta comum. Para refatorar o código para liberá-lo dos ciclos, o engenheiro aplica a correção rápida a uma dependência cíclica.
No último exercício, o engenheiro executa uma revisão de código e corrige
uma das descobertas.
Exercício
Neste exercício, execute as seguintes tarefas:
- Execute uma revisão de código para localizar as dependências cíclicas.
- Reconheça quando há uma correção rápida para uma dependência cíclica.
- Aplique uma correção rápida para resolver uma dependência cíclica:
- Veja a lista de alterações a serem feitas.
- Visualize o código existente e o refatorado para cada alteração.
- Obtenha uma confirmação de que a correção rápida foi aplicada.
Selecionando uma Revisão de Código para Verificar as Dependências Cíclicas
Para selecionar uma revisão de código que verifica dependências cíclicas:
- Na barra de ferramentas, na visualização Revisão de Código, clique no ícone Gerenciar Regras,
.

- Na lista Selecionar Revisão de Código, clique em Revisão de Código de Análise Estrutural.
- Expanda a pasta Análise Estrutural e limpe tudo exceto a subpasta Dependência Cíclica.
- Expanda a subpasta Dependência Cíclica para ver as regras que serão aplicadas à revisão de código, conforme mostrado na seguinte captura de tela. Clique em OK.

Selecionando um Código Base a Ser Revisado
Para selecionar o espaço de trabalho como o código base a ser revisado:
- Na barra de ferramentas, na visualização Revisão de Código, clique no ícone Revisar (
) > Revisar Espaço de Trabalho.
Executando a Revisão de Código
Depois de selecionar o código base a ser revisado, a revisão de código é executada. Você pode controlar o status verificando a barra de progresso no canto inferior direito da visualização.
Visualizando a Lista de Dependências Cíclicas Localizadas
A revisão de código localizou quatro dependências cíclicas, conforme mostrado na seguinte captura de tela. Uma dependência cíclica é um antipadrão não desejado que deve ser evitado. Em uma dependência cíclica, um grupo de objetos está tão interconectado que uma alteração em qualquer objeto pode afetar todos os outros.

- Expanda a pasta Análise Estrutural: Dependência Cíclica e note as descobertas presentes, conforme mostrado na próxima captura de tela:

- Cada dependência cíclica tem o nível de gravidade de problema mais alto (
) designado a ela.
- Duas dependências cíclicas têm uma correção rápida (
) para eliminar a dependência.
- Clique com o botão direito do mouse na terceira descoberta na lista. A opção do menu pop-up Correção Rápida varia dependendo da solução. Para a dependência cíclica selecionada, a correção deve mover o campo estático da classe-base para outra classe, eliminando, dessa forma, a dependência cíclica.
- Clique em Correção Rápida: Mover Campo Estático da Classe-base.

Aplicando a Correção Rápida
A correção rápida para a dependência cíclica selecionada deve mover o campo estático da classe-base para outra classe. Você pode escolher mover o campo para uma classe existente ou para uma nova classe.
Para mover o campo para uma nova classe:
- Na próxima captura de tela, revise as informações de leitura sobre as dependências cíclicas, também mencionadas como um entrelaçamento, que você vai corrigir:
- As classes que fazem parte do entrelaçamento
- Dependências entre as classes no entrelaçamento
- Clique em Gerar uma Nova Classe Java e digite:
- src/ para o nome da pasta de origem
- com.ibm.r2a.rules.rsa.examples para o nome do pacote
- Padrões para o nome da classe

- Clique em Visualizar para ver o código que a correção rápida irá alterar.
- Expanda a lista Alterações a Serem Executadas, conforme mostrado na seguinte captura de tela, para ver exatamente quais alterações a correção rápida fará no código quando ela mover o campo estático para a nova classe.

- Clique na quarta alteração na lista, que começa com Font.java, para ver uma visualização lado a lado do código. O código original está à esquerda e o código refatorado que será criado pela correção rápida está à direita.

- Clique em OK para aplicar a correção rápida a todas as alterações selecionadas na lista.
- Após a aplicação da correção rápida, você verá um visto como uma confirmação; dessa forma, você saberá que o problema foi resolvido.

Você concluiu o Exercício 1.4: Resolvendo um problema estrutural.
Alavancando o Poder das Correções Rápidas
As correções rápidas são fornecidas para algumas descobertas nas revisões de código. Aplicando uma correção rápida fornecida, você terá uma forma automatizada para resolver uma dependência cíclica. Você pode:
- Identificar e avalizar as dependências cíclicas.
- Eliminar a dependência rapidamente com uma correção rápida automatizada.
- Ver uma lista das alterações exatas que a correção rápida fará no código.
- Corrigir a dependência cíclica sempre de forma consistente.
Agrupando o Exercício 1.4
Você concluiu o Exercício 1.4: Resolvendo um problema estrutural. Nele você executou as seguintes tarefas:
- Executou uma revisão de código para localizar dependências cíclicas.
- Reconheceu quando havia uma correção rápida para uma dependência cíclica.
- Aplicou uma correção rápida para resolver uma dependência cíclica:
- Viu uma lista de alterações a serem feitas.
- Visualizou o código existente e o refatorado para cada alteração.
- Obteve uma confirmação de que a correção rápida foi aplicada.
Conclua o tutorial revisando os objetivos aprendidos no Resumo.