Las buenas prácticas en la programación son claves para los desarrollos. Gracias a estas buenas prácticas se consigue que nuestro código no sea solo eficaz, sino que también esté optimizado (Acceso rápido a la memoria y Bases de Datos) y que el mantenimiento del código creado/modificado de facilidades a su entendimiento y a su modificación.
En esta entrada vamos a dar una serie de Tips (Consejos) para poder conseguir unas buenas prácticas. En el anterior título vimos como una buena imagen del código (Nombres entendibles, organizar el código y evitar Hardcodes), ayuda a que sea entendible y fácil de continuar. En esta entrega se complementarán esos conceptos, se mostrarán consejos para continuar optimizando y limpiando el código.
Nomenclatura
Complementando al anterior título, los nombres claros también deben de seguir una misma nomenclatura y así poder identificarlos rápidamente. Seguir una misma máscara a la hora de inicializar los datos permitirá identificar que tipo de variable es y a qué nivel se puede utilizar. La clave para hacerlo bien se basa en dos preguntas que uno mismo se realiza cuando un dato no se entiende. ¿Dónde se utiliza? ¿Qué tipo de dato es? El concepto se puede entender con un ejemplo, la nomenclatura inglesa (Recomendada por expertos), aunque cada cliente puede usar la suya propia a la que un buen programador se tiene adaptar.
¿Dónde se utiliza?
Para esta pregunta se debe observar las limitaciones de uso de la variable. Las más limitadas suelen describirse como Locales, sí se puede usar en todo el desarrollo serán Globales o si por ejemplo la utilizaremos en una función, subrutina o método habrá que mirar si son de entrada, salida…Etc.
¿Qué tipo de dato es?
Para esta pregunta en cambio nos fijaremos en que tipo es para saber como se utiliza, ya que una variable se puede leer/modificar como queramos, pero en cambio una constante solo es de lectura, incluso en una tabla para leer/modificar el dato se necesitará un proceso previo para obtener a que campo de la tabla quieres apuntar (Fila/Columna).
Para inicializar cualquier tipo de dato y seguir las preguntas. [DONDE][TIPO]_[NOMBRE]. Para entenderlo mejor os expongo una serie de ejemplos:
Imaginaos que queremos inicializar una tabla de aviones y se va a usar localmente:
LT_AVIONES – (LOCAL TABLE_AVIONES)
Ahora imaginad una variable de una fecha que se va a utilizar únicamente en una subrutina y que se le transfiere como parámetro:
PV_FECHA – (PARAMETHER VARIABLE_FECHA).
Pretty Printer
El Pretty Printer es una herramienta propia de SAP que ayuda a SANGRAR el código y a establecer minúsculas y mayúsculas en las palabras claves para que la visualización y entendimiento sea más ameno.
En esta entrega os enseñaremos como configurarlo y como usarlo. Para configurarlo, entraremos en un Report/Clase/Función/etc. Y pulsaremos arriba a la izquierda en el menú “Utilidades” à “Opciones”.
Una vez dentro accederemos a la pestaña “Editor ABAP” y dentro de ella en la subpestaña “Pretty Printer”.
Es recomendable marcar los dos Flags (Sangrar y Conversión MAYUS/min) con las palabras claves marcadas con mayúsculas. Una vez configurado vuestras opciones aceptáis y si no se aplican los cambios reiniciar la sesión de SAP y se habrán aplicado correctamente.
Para poder usarlo, nos situamos delante de nuestro código en modo “Modificar”, como podéis observar no se muestra muy legible.
Una vez modificable lo único que hay que hacer es pulsar el botón, para terminar de que sea legible se recomienda añadir tabuladores, saltos de línea y comentarios como se muestra en la imagen del resultado final:
Cómo ordenar el código
Cuando se estructura un código se piensa sobre todo en el mantenimiento de este. Una estructura ordenada permite encontrar los puntos conflictivos con mucha mayor rapidez. Siguiendo la idea de SAP entorno a los INCLUDES automáticos de los Reports ejecutables es conveniente estructurar el código de una manera similar:
No es necesario crear includes para separarlo, lo importante es el orden. Esta estructura permite tener claridad y agilidad en el código.
Para una buena estructura se deben intentar inicializar los datos locales todos juntos al principio del programa/función/subrutina. Seguido intentar hacer la mayoría de los accesos a Bases de Datos (Mínimo las que tengan más carga de datos y contenga los datos más importantes), y en el código principal hay que intentar evitar la inicialización de los datos y los accesos a bases de datos.
La importancia de las subrutinas y las funciones
Crear subrutinas o funciones puede resultar a veces engorroso y poco útil. Aunque es recomendable usarlas en dos aspectos:
- Distinguir una acción: Cuando se programa un código el cual tiene múltiples acciones es interesante diferenciar dichas acciones a la hora de leerlo.
Ejemplo: Un Report en el cual hay que seleccionar aviones, pasajeros y mercancías y hay que separar los datos y cálculos de cada uno de ellos. Será entonces cuando tras seleccionar los datos, se genera una subrutina para cada una de las derivaciones F_AVIONES, F_PASAJEROS y F_MERCANCIAS.
- Evitar código duplicado: Si en un mismo código existen dos acciones similares. Este fragmento se va a repetir n veces, hacer que no se repita ayuda a no acumular código innecesario permitiéndolo reutilizar el existente.
No hace falta que sean iguales, gracias a los parámetros de entrada se puede configurar para realizar diferentes acciones con la sentencia “IF” o “CASE” dentro de la subrutina.
Ejemplo: Report con los datos de los aviones de pasajeros y de los aviones de mercancía, para ello se genera una subrutina que se llame F_DISTINGUIR_AVIONES.
Conclusión
Es muy importante programar bien, ayuda a el día a día de cualquier programador. Da facilidad a saber por dónde empezar, eficacia en el código, lo optimiza y lo mejora y sobre todo ayuda a que el mantenimiento no sea tan costoso.
Esperamos que este artículo te sea de utilidad. Si tienes alguna pregunta no dudes en ponerla en los comentarios o ponerte en contacto con nosotros.