Quick assists para edição

Usando refatorações localizadas para ser mais produtivo

Você passa tempo demais fazendo tarefas repetitivas enquanto programa? Se sim, tenho boas notícias para você. Muitas dessas tarefas repetitivas podem ser feitas automaticamente com um recurso que chamamos de quick assists.

Um quick assist é uma edição automática voltada para fazer uma mudança comum no código. Diferente de um quick fix, que vimos em Quick fixes para problemas de análise e Aplicação em lote de correções, a presença de um quick assist não é uma sugestão de que você deve mudar seu código; ele está ali simplesmente para facilitar o seu trabalho.

Vamos ver alguns exemplos.

Declarando variáveis locais

#

Você provavelmente passa um bom tempo declarando e inicializando variáveis locais. As ferramentas podem ajudar com parte disso. Se você digitar a expressão de inicialização, pode usar um quick assist para criar uma variável local que captura o valor da expressão.

Se você começar com o código abaixo e posicionar o cursor em qualquer lugar da expressão, o ícone da lâmpada aparece perto da borda esquerda do editor. Se passar o mouse sobre ele, pode clicar para abrir um menu com os quick assists disponíveis.

Visual Studio Code showing the quick assist menu to extract a local variable.
Visual Studio Code
IntelliJ IDEA showing the quick assist menu to extract a local variable.
IntelliJ IDEA

Escolher o assist insere uma declaração de variável, usando a expressão como inicializador, e seleciona o nome da variável para que você possa escolher um dos nomes sugeridos ou digitar o seu próprio:

Visual Studio Code after extracting a local variable.
Visual Studio Code
IntelliJ IDEA after extracting a local variable.
IntelliJ IDEA

Pressionar a tecla enter/return aceita o nome digitado.

Estilos de corpo de função

#

Se você usa com frequência funções com corpo de expressão, provavelmente já precisou convertê-las em uma função com corpo de bloco em algum momento. Há um assist para isso também. Por exemplo, se você tiver um código como o seguinte e posicionar o cursor dentro da seta, verá as opções a seguir:

Visual Studio Code showing the quick assist to convert an expression body to a block body.
Visual Studio Code
IntelliJ IDEA showing the quick assist to convert an expression body to a block body.
IntelliJ IDEA

Selecionar “Convert to block body” reescreve o corpo da função para ficar assim:

Visual Studio Code after converting to a block body.
Visual Studio Code
IntelliJ IDEA after converting to a block body.
IntelliJ IDEA

E, sim, existe outro assist que converte de corpo de bloco para corpo de expressão.

Reescrevendo instruções if

#

Assists também podem ajudar em reestruturações maiores. Se você já escreveu código estruturado assim:

void f(int a, int b, int c, int d) {
  if (a == b) {
    if (a == c || a == d) {
      print(0);
    }
  }
}

e percebeu que poderia combinar as duas condições, existe um assist para isso. Coloque o cursor no if interno e abra o menu:

Visual Studio Code showing the quick assist to join an if statement with an outer if statement.
Visual Studio Code
IntelliJ IDEA showing the quick assist to join an if statement with an outer if statement.
IntelliJ IDEA

Selecionar “Join ‘if’ statement with outer ‘if’ statement” reescreve o código para ficar assim:

void f(int a, int b, int c, int d) {
  if (a == b && (a == c || a == d)) {
    print(0);
  }
}

O assist também aparece se você colocar o cursor no if externo, embora, nesse caso, o menu diga “Join ‘if’ statement with inner ‘if’ statement”.

Usando recursos mais novos da linguagem

#

Também há assists para ajudar a converter para recursos mais novos da linguagem. Por exemplo, se você tiver uma classe assim:

class A {
  A({int? x, int? y});
}

class B extends A {
  B({int? x, int? y}) : super(x: x, y: y);
}

em que o construtor da subclasse passa alguns parâmetros para a superclasse sem modificá-los, existe uma forma mais limpa de escrever o código. Coloque o cursor no nome do construtor B e abra o menu:

Visual Studio Code showing the quick assist to convert to using super parameters.
Visual Studio Code
IntelliJ IDEA showing the quick assist to convert to using super parameters.
IntelliJ IDEA

Selecionar “Convert to using super parameters” reescreve o código para ficar assim:

Visual Studio Code after converting to super parameters.
Visual Studio Code
IntelliJ IDEA after converting to super parameters.
IntelliJ IDEA

Há mais assists disponíveis do que conseguimos cobrir em um único artigo. Da próxima vez que você for fazer uma edição que faz o tempo todo, confira as ações de contexto para ver se existe um assist que facilite a tarefa.

Mais do Dart