Cómo reducir el número de caracteres APEX utilizados.

1. Introducción

 

A medida que las organizaciones Salesforce crecen en complejidad, es habitual el aumento del número de desarrollos personalizados que, en última instancia, requieren de la creación de código APEX. En ciertos casos, el número de caracteres utilizados alcanza el límite máximo por organización establecido por Salesforce, conllevando generalmente tareas de revisión/optimización de código o solicitudes de ampliación de caracteres máximos (Salesforce exige, previamente a la ampliación, una revisión del código actual y una justificación para dicha solicitud de ampliación).

En este artículo se presentan varias características clave del recuento de caracteres y se derivan, a partir de éstas, directrices que permiten reducir el número de caracteres del código producido manteniendo la legibilidad del mismo.

Asimismo, se relacionan estas directrices con características del IDE Visual Studio Code (VSC a partir de ahora) por ser, a fecha actual, el IDE apoyado por Salesforce.

 

2. Características principales del recuento de caracteres

 

A continuación se presentan las características clave del recuento que nos van a permitir, en última instancia, establecer las directrices que nos permitirán minimizar el uso de caracteres APEX. Las características son las siguientes:

  • 1. Cada tabulación en una línea con código cuenta como 1 carácter (también las tabulaciones situadas al final de cada línea de código)
  • 2. Cada espacio en blanco en una línea con código cuenta como 1 carácter (también los espacios en blanco situados al final de cada línea de código)
  • 3. Las líneas en blanco o que contengan únicamente comentarios/espacios/ tabulaciones o una combinación de éstos no se añaden al cómputo global de caracteres
  • 4. Los espacios o tabulaciones ubicados entre el código y un comentario en línea sí que cuentan para el cómputo global (son un caso particular de los puntos 1 y 2). No contarían para el cómputo global los ubicados dentro del propio comentario

 

Imagen 1: Ejemplo de cómputo descrito en el punto 4. El espacio situado entre el código sí se tiene en cuenta para el código global ya que es un espacio en blanco situado en una línea de código (punto 2). No obstante, los espacios situados íntegramente dentro de un comentario no se añaden al cómputo global

 

3. Directrices para minimizar el número de caracteres usados

 

En base a las bases del recuento explicadas en el punto anterior, podemos inferir las siguientes directrices de cara a reducir el número de caracteres usados por nuestro código:

  • 1. El uso de espacios en blanco para el sangrado de nuestro código tiene un impacto negativo directo en el número de caracteres utilizados. Dado que cada espacio introducido en líneas no vacías cuenta como un carácter, introducir espacios como sustituto de la tabulación añade caracteres extra innecesarios. Es decir, en caso de que usemos 4 espacios como sangrado, estaremos introduciendo 3 caracteres adicionales al recuento total. Aunque la práctica general es utilizar la tabulación como herramienta de sangrado, hay que tener en cuenta que algunos IDEs (como por ejemplo VSC) permiten configurar la tabulación como un conjunto de espacios de forma automática. Por este motivo, es importante desactivar esta opción cuando desarrollemos nuevo código APEX

     

    Imagen 2: Opción de inserción de espacios al presionar la tecla de tabulación en VSC

  • 2. Es conveniente evitar la introducción de tabulaciones o espacios innecesarios al final de cada línea dado que, como se ha comentado en el punto anterior, también contribuyen al recuento total de caracteres
  • 3. En caso de que cierta sección del código se pueda escribir sin sacrificar legibilidad en una única línea, en cuanto al recuento de caracteres es mejor utilizar una única línea dado que cada nueva línea aumenta el número de tabulaciones u espacios utilizados

 

4. Funcionalidades útiles de VSC

 

Visual Studio ofrece varias funcionalidades que pueden permitir de forma sencilla optimizar nuestro código APEX en cuanto a la economía de caracteres por sangrado se refiere.

 

4.1 Eliminación de Espacios Finales

 

Una de las opciones que nos ofrece VSC y que permite eliminar caracteres innecesarios APEX es la eliminación automática de espacios en blanco al final de cada línea. Para hacer uso de esta funcionalidad, pulsaremos en la parte inferior derecha de VSC sobre la sección que nos informa sobre la configuración para nuestra tabulación dentro de este archivo (Imagen 3).

 

Imagen 3: Configuración de la tabulación actual para el archivo seleccionado. Pulsando sobre esta opción se nos muestran varias de las funcionalidades que permiten reducir de forma automática el uso de caracteres

 

Imagen 4: Lista de funcionalidades que permiten la optimización de caracteres usados

 

Se nos muestra una lista de funcionalidades relacionadas con el sangrado del archivo actual. La última opción de las mostradas (Recortar espacio final) es la que nos permite eliminar todos los espacios finales innecesarios del archivo actual (Imagen 4).

 

 

4.2 Conversión de sangrado en tabulación

 

La última funcionalidad de VSC a tener en cuenta es la opción de Convertir sangría en tabulaciones (Imagen 5). Esta opción nos permite transformar a tabulaciones todas las sangrías realizadas con espaciado. Esta acción, en base a las observaciones de la sección 2, permite reducir, por ejemplo para un archivo con una sangría de 4 espacios, un número de caracteres total igual a 3 por el número total de sangrías en el documento.

 

Imagen 5: Lista de funcionalidades ofrecidas por VSC relacionadas con el sangrado. Se resalta la función de conversión del sangrado en tabulaciones

 

5. Conclusiones

 

Se han presentado en este artículo varias configuraciones que permiten optimizar el uso de caracteres APEX y que se deberían tener en cuenta en cualquier desarrollo Salesforce. Asimismo, se explican dos funcionalidades que permiten reducir de forma automática el número de caracteres para clases ya existentes sin afectar a la funcionalidad de la clase.

Dicho esto, es importante remarcar que ninguna de las consideraciones en cuanto a la economía de caracteres sustituye la optimización, refactorización y continua revisión del código existente. Frente a cualquier grupo de nuevos requisitos, siempre se debe considerar y abordar el planteamiento de una nueva solución considerando las herramientas declarativas que Salesforce ofrece y recomienda. Estos puntos siguen siendo prioritarios para cualquier código que desarrollemos y están en las bases de un código escalable y sostenible.

Asimismo, es imperante que se prioricen la legibilidad así como la creación de código auto explicativo sobre la economía de caracteres en cualquier caso (elección de nombres de variables/métodos, estructuración del código, etc.).

 

Guia introduccion MuleSoft AnyPoint