Asistencias rápidas para editar

Usando refactorizaciones localizadas para ser más productivo

¿Pasas demasiado tiempo realizando tareas repetitivas mientras programas? Si es así, entonces tengo buenas noticias para ti. Muchas de las tareas repetitivas se pueden realizar automáticamente usando una funcionalidad que llamamos asistencias rápidas.

Una asistencia rápida es una edición automatizada orientada a realizar un cambio común en el código. A diferencia de una corrección rápida, que vimos en Correcciones rápidas para problemas de análisis y Aplicación masiva de correcciones, la presencia de una asistencia rápida no es una sugerencia de que deberías cambiar tu código, simplemente está ahí para facilitarte el trabajo.

Veamos un par de ejemplos.

Declarar variables locales

#

Probablemente pasas bastante tiempo declarando e inicializando variables locales. Las herramientas pueden ayudar con parte de eso. Si escribes la expresión de inicialización, puedes usar una asistencia rápida para crear una variable local que capture el valor de la expresión.

Si comienzas con el código siguiente y colocas el cursor en cualquier parte de la expresión, aparecerá el icono de bombilla cerca del borde izquierdo del editor. Si pasas el cursor por encima, puedes hacer clic para abrir un menú que contiene las asistencias rápidas disponibles.

Visual Studio Code mostrando el menú de asistencia rápida para extraer una variable local.
Visual Studio Code
IntelliJ IDEA mostrando el menú de asistencia rápida para extraer una variable local.
IntelliJ IDEA

Al elegir la asistencia se inserta una declaración de variable, usando la expresión como inicializador, y se selecciona el nombre de la variable para que puedas elegir uno de los nombres sugeridos o escribir el tuyo propio:

Visual Studio Code después de extraer una variable local.
Visual Studio Code
IntelliJ IDEA después de extraer una variable local.
IntelliJ IDEA

Presionar la tecla enter/return acepta el nombre introducido.

Estilos de cuerpo de función

#

Si usas frecuentemente funciones con cuerpo de expresión, probablemente hayas necesitado convertir una en una función con cuerpo de bloque en algún momento. Hay una asistencia para eso también. Por ejemplo, si tienes código como el siguiente y colocas el cursor dentro de la flecha, verás las siguientes opciones:

Visual Studio Code mostrando la asistencia rápida para convertir un cuerpo de expresión a un cuerpo de bloque.
Visual Studio Code
IntelliJ IDEA mostrando la asistencia rápida para convertir un cuerpo de expresión a un cuerpo de bloque.
IntelliJ IDEA

Al seleccionar “Convertir a cuerpo de bloque” se reescribe el cuerpo de la función para que se vea así:

Visual Studio Code después de convertir a un cuerpo de bloque.
Visual Studio Code
IntelliJ IDEA después de convertir a un cuerpo de bloque.
IntelliJ IDEA

Y, sí, hay otra asistencia que convierte de un cuerpo de bloque a un cuerpo de expresión.

Reescribir sentencias if

#

Las asistencias también pueden ayudar con reestructuraciones más grandes. Si alguna vez has escrito código estructurado así:

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

y te diste cuenta de que podrías combinar las dos condiciones, hay una asistencia para eso. Coloca el cursor en el if interno y abre el menú:

Visual Studio Code mostrando la asistencia rápida para unir una sentencia if con una sentencia if externa.
Visual Studio Code
IntelliJ IDEA mostrando la asistencia rápida para unir una sentencia if con una sentencia if externa.
IntelliJ IDEA

Al seleccionar “Unir sentencia ‘if’ con sentencia ‘if’ externa” se reescribe el código para que se vea así:

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

La asistencia también aparece si colocas el cursor en el if externo, aunque entonces el menú dice “Unir sentencia ‘if’ con sentencia ‘if’ interna”.

Usar funcionalidades más recientes del lenguaje

#

También hay asistencias para ayudarte a convertir a funcionalidades más recientes del lenguaje. Por ejemplo, si tienes una clase como esta:

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

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

donde el constructor de la subclase pasa algunos parámetros a la superclase sin modificarlos, hay una forma más limpia de escribir el código. Coloca el cursor en el nombre del constructor B y abre el menú:

Visual Studio Code mostrando la asistencia rápida para convertir al uso de super parámetros.
Visual Studio Code
IntelliJ IDEA mostrando la asistencia rápida para convertir al uso de super parámetros.
IntelliJ IDEA

Al seleccionar “Convertir a uso de super parámetros” se reescribe el código para que se vea así:

Visual Studio Code después de convertir a super parámetros.
Visual Studio Code
IntelliJ IDEA después de convertir a super parámetros.
IntelliJ IDEA

Hay más asistencias disponibles de las que podemos cubrir en un solo artículo. La próxima vez que te encuentres a punto de realizar una edición que haces todo el tiempo, revisa las acciones de contexto para ver si hay una asistencia que facilite la tarea.

Más de Dart