Easy To Make

Buenas prácticas | 4 recomendaciones de programación

TIEMPO DE LECTURA - EASY TO MAKE   Tiempo de lectura: 10 min.  TIEMPO DE LECTURA - EASY TO MAKE   Nivel: Apasionados de la programación


LINUS TORVALDS- EASY TO MAKE

“Hablar es barato. Enséñame el código”

— Linus Torlvalds

4 recomendaciones para programar con estándares y convenciones

‘Las cosas se parecen a su dueño’.

Refrán popular

Cuando quieres conocer a un programador, dile que te muestre un bloque de código. Podrás llevarte sorpresas. La programación es el arte de pintar ceros y unos legibles, eficiente y eficazmente para la máquina, colegas y clientes.  He ahí el reto. El mantenimiento de los programas será un tomento para los que vienen realizando actualizaciones cada año.

Y  ni decir del estrés que aguantan los procesadores cuando de calidad de software se trata.

Pero para empezar ‘por el principio’, si deseas pasar a las ligas de buenos programadores, te recomendamos por la experiencia de años, los siguientes consejos, digamos, ‘principios del ciclo de vida’ del programador.

   Estándares y Convenciones


” ‘Cero defectos’ es el grito de batalla de la prevención de defectos. Significa ‘haga el trabajo bien a la primera vez.’ ”

PHIL CROSBY

Aunque el perfeccionismo es una imperfección, un programa estará plago de ‘defectos’ si no se aplican los estándares y las convenciones internacionales.

Organismos

¿Sabías que existe una organización mundial de estándares de software? Se le conoce como la World Wide Web Consortium (W3C). Como parte de sus objetivos pretende establecer:

 […] ciertos términos, conceptos, formatos de datos, estilos de documentos y técnicas acordadas por los creadores de software para que su software pueda comprender los archivos y datos creados por un programa informático diferente. Para ser considerado un estándar, un determinado protocolo debe ser aceptado e incorporado por un grupo de desarrolladores que contribuyen a la definición y mantenimiento del estándar. […]

Por otra parte, existen metodologías muy bien definidas durante la creación de lenguajes de alto nivel. En los comienzos del lenguaje de programación C, creado por Kernighan y Ritchie (1969-1972), se establecieron métodos para su uso, como el manejo de llaves, declaración de variables, nombres de funciones o procedimientos, etc., que aún se siguen en la actualidad.

Así, los estándares nos facilitan escribir código coherente y lógico, impactando finalmente la eficiencia. Imagina un equipo de programadores encargados del desarrollo de un proyecto empresarial, donde cada uno tiene su estilo propio. Esto afectaría negativamente la revisión, lectura, uso compartido de módulos, clases, código y las pruebas. 

   #1: COMENTAR ARCHIVOS Y FUNCIONES

Inicia cada bloque de código fuente con los comentarios que describan claramente su funcionalidad y contenido. 

Este bloque debe contener mínimo:

  1. Descripción: Propósito y relevancia del módulo
  2. Historial de cambios: Registro de:
    1. Los programadores/autores
    2. Fecha de revisión
    3. Registro de nuevas modificaciones

Por ejemplo, si se implementa o modifica una función, el bloque de encabezado puede ser algo así:

/ * * * ** * * * * * * * * * * * * * * * * * * * * * * * * *
* FECHA : Actualizado en dia-mes-año
* RESPONSABLE: Ingeniero xyz
* FUNCIÓN: Verificar rehúso de Tarjeta de puntos
* DESCRIPCIÓN: Se requiere conocer si el cliente es fiel al producto
* ENTRADAS: lectura de la Tarjeta, Verificación de existencia del
            cliente y total de puntos acumulados
* RETORNA: Acumulado
* DEVUELVE: Autorización de la compra con Tarjeta
* * * ** * * * * * * * * * * * * * * * * * * * * * * * * */ 

   #2: COMENTAR LAS LÍNEAS DE CÓDIGO

Ayuda a otros programadores a comprender la funcionalidad del bloque del algoritmo que desarrolles. Estas notas pueden ir al principio del bloque, dentro del cuerpo de las funciones o procedimientos y de modo muy particular y por experiencia: cuando utilizar varias llaves de apertura y tu código es extenso, es muy orientador poner un comentario sencillo al final de algunas llaves de cierre. Aunque los editores modernos identan automáticamente el código, esto facilita hallar rápidamente el cierre de las estructuras de control.

Observa los comentarios al inicio del siguiente bloque (programa de laboratorios de este curso) y al final de las llaves. Incluso se ha puesto comentario en la llave de cierre de la clase:

// SECCCIÓN PARA LOS MÉTODOS A LLAMAR DESDE EL MAIN
// Rutina que permite realizar ejercicio con C# y operadores
// Se usan estructuras de control y contadores
//-----------------------------------------------------

public static void MenuPrincipal()
{
    // Dibujamos el menu
    Console.Clear();
    Console.WriteLine("\t\t------------------------------------------\n");
    Console.WriteLine("\t\tMENU DE OPERACIONES MATEMATICAS CON FOR...\n");
    Console.WriteLine("\t\t-------------------------------------------\n");
    Console.ForegroundColor = ConsoleColor.Yellow;
    Console.WriteLine("\t\t[N] Sumar los primeros 100 naturales");
    Console.WriteLine("\t\t[P] Sumar primeros 100 pares y promediar");
    Console.WriteLine("\t\t[M] Sumar los primeros 50 multiplos de 3");
    Console.WriteLine("\t\t[Q] Salir...\n");
    Console.ForegroundColor = ConsoleColor.White;
    Console.WriteLine("Por favor, seleccione una opcion...");
}

// Bloque de procedimientos y cálculos
public static void suma100Naturales()
{
    int suma = 0;
    int numero;

    // Se modificó el while por el For
    // FECHA : Actualizado en dia-mes-año
    // RESPONSABLE: Ingeniero xyz
    for (numero = 1; numero < 100; numero++)
        suma += numero;
        Console.WriteLine("Se han sumado un total de : {0}",numero );
        Console.WriteLine("La suma de los primeros 100 naturales es de : {0}",suma );
        Console.ReadKey();  

}// suma100Naturales

public static void suma100Pares()
{
    int suma = 0;
    int numero;
    int contador = 1;

    for (numero = 2; numero < 100; numero += 2)
        {
            suma += numero;
            contador += 1;
        }
        
    Console.WriteLine("Se han sumado un total de : {0}",contador );
    Console.WriteLine("La suma de los primeros 100 numeros pares es de : {0}", suma);
    Console.ReadKey();

}// suma100Pares

public static void suma50Multiplos3()
  {
    int suma = 0;
    int numero;
    int contador = 1;

    for (numero = 3; numero < 50; numero += 3)
    {
        suma += numero;
        contador += 1;
    }

    Console.WriteLine("Se han sumado un total de : {0}", contador);
    Console.WriteLine("La suma de los primeros 50 multiplos de 3, es de : {0}", suma);
    Console.ReadKey();

  }// suma50Multiplos3
 }// CLASE
}
 

   #3: Definir automatización de estilo

Respeta siempre la identación que generalmente viene por default en los editores modernos. Conserva los espacios entre líneas y evita usar la tecla Tab.

Estilo de programación en Visual Studio.Net

En este curso usamos .Net C#. El editor podrás configurarlo para generar un archivo tipo EditorConfig, que nos permite definir para cada proyecto el estilo a utilizar. Además podras usar la opción “Limpiar código” de tal manera que se apliquen tus preferencias y estilo. Especialmente útil mientras te disciplinas en los estándares.

En la imagen se muestra el panel de configuración de Visual Studio para la identación y estilo de línea:

   EditorConfig

La configuración de este archivo y establecimiento de los estándares está disponible en Herramientas > Opciones > Editor de texto > [C# o Basic] > Estilo de código > General.

 Haga clic en Generar archivo .editorconfig desde la configuración para generar automáticamente un archivo .editorconfig de estilo de codificación basado en la configuración establecida en la página Opciones. Guárdalo en la ruta de tus proyectos.

Ejemplo:
Podrás configurar y estandarizar tu estilo de codificación en las columnas Descripción, Preferencia, Gravedad.

Al seleccionar de la columna la opción Preferencias de bloque de código, observa las alternativas de estilo. Selecciona Preferir llaves. A la derecha en el selector tienes las opciones Sí, No, Cuando se usan varias líneas. haz la prueba seleccionando > ‘Cuando se usan varias líneas’ y revisa cómo quedará tu estilo de codificación relacionado con el uso de llaves de apertura y cierre de bloques ( { } ), como observas en la imagen:

CONFIGURACIÓN ESTILO DE PROGRAMACIÓN - EASY TO MAKE -0

Una vez termines tu codificación, ejecuta la opción como se observa en la imagen, para aplicar el estilo de código predeterminado en tu archivo .editorConfig

CONFIGURACIÓN ESTILO DE PROGRAMACIÓN - EASY TO MAKE -1

Establecer tu estilo definitivo para los proyectos, repositorio, colaboradores o  plantilla de programadores, es una práctica propia de desarrolladores que siguen estándares y cumplen con la calidad de software.

   Aplicar estilos en modo compilación

[…] En tiempo de compilación, las infracciones al estilo de código de .NET aparecerán como advertencias o errores con un prefijo “IDE”. Esto le permite aplicar estrictamente estilos de código coherentes en el código base.

Microsoft

   #4: Utilice las convenciones más usadas

A la fecha existen convenciones que engloban una notación o parte de nuestro código para estandarizarlo.

Notación Húngara

El Dr. Charles Simonyi fue el creador de esta notación popular. Su propósito es crear un estándar en la declaración de variables.

En la siguiente tabla se relacionan algunos ejemplos: 1

PrefijoSignificado
bBooleano (int)
lblObjeto Label
txtCajas de texto

Ejemplo:
bRespuesta: una variable booleana que almacena una respuesta.
txtHora: una instancia de un objeto o componente textbox que almacena la hora.

Notación Pascal

Esta notación se utiliza aplicando mayúscula a la primera letra del nombre de una variable y si el nombre fuese compuesto igualmente la primera letra de la segunda parte

Ejemplo:
puntos > Puntos
punto clientes > PuntosCliente 

Notación Camel

Es similar a la notación pascal con la diferencia que se inicia siempre en minúscula y la segunda en mayúscula

Ejemplo:
puntos > puntos
punto clientes > puntosCliente 

En Easy To Make, hacemos uso de la  notación Camel.

Declaración de constantes:
Se declaran en mayúsculas.

Variables:
La primera palabra de cada nombre de variable estará en minúsculas. Cualquier palabra adicional se distinguirá de la primera palabra con mayúsculas iniciales.
En general, para nombres de variables estáticas utilice “Static” y para nombres de variables globales utilice la palabra reservada “Global”. 

Variables Globales: 2
Las variables globales deben estar completamente documentadas en cuanto a su propósito, qué módulos acceden a la variable y bajo qué condiciones ocurre el acceso.

   Clases especializadas y accesores

Como recomendación especial, el estándar para el manejo de variables propone establecer propiedades para acceder a las variables que estarán encapsuladas en Clases especializadas con los datos privados y sus respectivos métodos públicos para acceder a estos.

Por supuesto, en próximos artículos ampliaremos otras recomendaciones para obtener código bien escrito.

Fuente:

  1. Wikipedia
  2. Australian National University
  3. Microsoft

Dejar un comentario