Arquitectura serverless con KNative
Bats para testear scripts

Estándares de codificación

Estándares de codificación

Aunque a menudo se ignoran, los estándares de codificación son cruciales para crear una base de código coherente y legible, esencial para nuevas incorporaciones en el equipo y para la escalabilidad.

Escribir y comprender código en una gran base de código que no sigue los estándares de codificación es un proceso desordenado e imposible de mantener, por mucho comentarios que tenga. Tener presentes unos estándares de codificación consensuados por el equipo asegura un proceso de desarrollo de software ágil y una buena calidad del código.

Índice:

¿Qué son los estandares de codificación?

Los estándares de codificación son reglas, técnicas y directrices para crear un código más limpio, legible y eficiente, con un mínimo de fallos y errores. Además, ofrecen a los desarrolladores una forma uniforme de construir código altamente funcional.

Recuerde que las normas de codificación no son opiniones personales; son reglas concretas que determinan el estilo de programación, los procedimientos y los métodos de su código. Por tanto, deben definirse explícitamente y ponerse a disposición de los desarrolladores.

Las normas de codificación garantizan que todos los desarrolladores sigan las directrices especificadas. Como resultado, todos los desarrolladores -incluso los recién llegados- pueden entender, depurar y mantener el código con facilidad. Lo ideal sería que el código fuente de su equipo pareciera escrito por un único desarrollador en una sola sesión.

¿Por qué son necesarias los estándares de codificación?

  • Reducen los problemas de seguridad y rendimiento que podrían derivarse de unas malas prácticas de codificación;
  • Ayudan a garantizar la calidad del código, facilitando su lectura, análisis y trabajo. El código también resulta más fácil de mantener y ampliar, incluso para los nuevos desarrolladores;
  • Reducen la complejidad del código y aportan soluciones de diseño más elegantes;
  • Cualquier desarrollador puede examinar cualquier parte del código, entenderlo y cambiarlo independientemente de cuándo y quién lo escribió.

Ventajas del uso de los estándares de codificación

  • Mejora de la eficacia del proceso de desarrollo de software: los desarrolladores dedican gran parte de su tiempo a solucionar problemas de calidad del código que podrían haberse evitado. La aplicación de normas de codificación ayudará a su equipo a detectar los problemas en una fase temprana o a evitarlos por completo.
  • Reducción de la complejidad del código y del número de fallos: si su base de código es innecesariamente compleja, las posibilidades de ser vulnerable a errores y fallos son mayores. Los estándares de codificación ayudan a desarrollar software menos complejo y, por tanto, a reducir los errores.
  • Mejora del proceso de corrección de errores: con los estándares de codificación, es más fácil para los desarrolladores localizar y corregir errores en el código fuente porque está escrito de forma coherente.
  • Mejora del proceso de mantenimiento del código: si los desarrolladores siguen normas de codificación, el código es coherente y puede mantenerse fácilmente. Cualquiera puede entenderlo y modificarlo fácilmente en cualquier momento.
  • Reducción del coste y el tiempo de desarrollo al permitir la reutilización: Un código claro permite a los desarrolladores reutilizar el código siempre que sea necesario. La reutilización puede reducir radicalmente el coste y el tiempo del proceso de desarrollo.
  • Mejor integración del equipo: la incorporación de nuevos desarrolladores resulta más sencilla porque el código es uniforme y fácil de entender. Los nuevos miembros del equipo pueden comprender rápidamente la base de código y saben cómo contribuir a ella de la misma manera coherente.

Prácticas recomendadas para el uso de los estándares de codificación

  • Comprenda por qué utiliza normas de codificación: recuerde que el uso de normas de codificación mejora la legibilidad, el mantenimiento y la portabilidad del código.
  • Elija el mejor estándar de codificación para su sector o lenguaje de programación principal: existen estándares de codificación y guías de estilo para ámbitos de aplicación o lenguajes de programación específicos. Por ejemplo, vea cómo aplicar la guía de estilo JavaScript de Google con Codacy.
  • Describa la intención detrás de cada regla: si está utilizando un estándar interno, cada regla o directriz que esté implementando debe tener una descripción clara. Es necesario resumir la intención de las reglas y proporcionar un contexto más profundo de por qué están ahí.
  • Actualice las normas de codificación con cuidado: naturalmente, su organización evolucionará y sus normas de codificación podrían cambiar o usted podría actualizarlas con el tiempo. Sin embargo, las actualizaciones frecuentes pueden no ser una buena práctica, porque es más difícil mantenerse constantemente al día.
  • Priorice las normas de codificación: cuando compruebe por primera vez su código con respecto a una norma de codificación, es posible que obtenga muchos problemas. Categorizar las reglas con una matriz de gravedad ayuda a evaluar la calidad del código y a priorizar la corrección de errores.
  • Planifique las desviaciones de las normas: las normas de codificación no se ajustan a todas las situaciones y puede haber algunas excepciones. Hay que decidir qué normas pueden desviarse y cuáles no; especificar cómo puede hacerse una desviación de propiedad; y enumerar lo que hay que documentar cuando se produce una desviación.
  • Eduque a su equipo: proporcionar material de apoyo puede ayudar a su equipo a comprender mejor las normas de codificación y por qué es necesario aplicarlas. Si su equipo conoce las ventajas, también estará más motivado para seguir las normas de codificación.

Herramientas y ejemplos

Hay una serie de programas que nos pueden ayudar a estandarizar nuestro código. Comprobando el código antes, mientras y después de nuestros despliegues nos aseguramos por ejemplo de que una indentación diferente (espacios vs tabulaciones, 2 espacios vs 4 espacios, etc), por error o por religión, no nos provoque un dolor de cabeza innecesario.

Estructuras de lenguajes de programación

Código Espagueti, el «anti patrón» de programación

Bash

bash

Herramienta:

  • ShellCheck: Herramienta que proporciona advertencias y sugerencias para scripts de Bash.

Ejemplo:

#!/bin/bash

# Ejemplo de script Bash siguiendo algunas convenciones comunes

parametro_uno=5
parametro_dos=10

if [ $parametro_uno -gt 0 ]; then
    echo "El parámetro uno es positivo."
else
    echo "El parámetro uno no es positivo."
fi

Documentación:

C

c

Herramientas:

  • clang-format: Herramienta de formateo para C y otros lenguajes compatibles con LLVM.
  • cppcheck: Herramienta estática de análisis de código para C y C++.

Ejemplo:

// Ejemplo de código C siguiendo algunas convenciones de estilo comunes

#include 

int main() {
    int parametroUno = 5;
    int parametroDos = 10;

    if (parametroUno > 0) {
        printf("El parámetro uno es positivo.\n");
    } else {
        printf("El parámetro uno no es positivo.\n");
    }

    return 0;
}

Documentación:

Go

Go

Herramientas:

  • gofmt: Herramienta oficial para formatear código Go.
  • golint: Linter para Go que verifica el cumplimiento de convenciones y estilos recomendados.

Ejemplo:

// Ejemplo de código Go siguiendo las convenciones de estilo recomendadas

package main

import "fmt"

func main() {
    parametroUno := 5
    parametroDos := 10

    if parametroUno > 0 {
        fmt.Println("El parámetro uno es positivo.")
    } else {
        fmt.Println("El parámetro uno no es positivo.")
    }
}

Documentación:

Java

java

Herramientas:

  • Checkstyle: Herramienta de verificación de código que sigue las reglas de estilo, como las especificadas en el Google Java Style Guide
  • SpotBugs: Herramienta de análisis estático que puede ayudar a encontrar posibles problemas en el código Java.

Ejemplo:

// Ejemplo de código Java siguiendo el Google Java Style Guide

public class MiClase {
    private int parametroUno;
    private int parametroDos;

    public MiClase(int parametroUno, int parametroDos) {
        this.parametroUno = parametroUno;
        this.parametroDos = parametroDos;
    }

    public void metodoEjemplo() {
        if (parametroUno > 0) {
            System.out.println("El parámetro uno es positivo.");
        } else {
            System.out.println("El parámetro uno no es positivo.");
        }
    }
}

Documentación:

JavaScript

estándares de codificación JavaScript
Herramientas:

  • eslint: Herramienta de linting para JavaScript que permite personalizar reglas según las guías de estilo, como la de Airbnb.
  • prettier: Formateador de código que ayuda a mantener la consistencia en el estilo de JavaScript.

Ejemplo:

// Ejemplo de código JavaScript siguiendo la guía de estilo Airbnb

class MiClase {
  constructor(parametroUno, parametroDos) {
    this.parametroUno = parametroUno;
    this.parametroDos = parametroDos;
  }

  metodoEjemplo() {
    if (this.parametroUno > 0) {
      console.log("El parámetro uno es positivo.");
    } else {
      console.log("El parámetro uno no es positivo.");
    }
  }
}

Documentación:

Perl

Perl
Herramientas:

  • Perl::Critic: Herramienta que proporciona comentarios sobre el estilo y calidad del código Perl.
  • perltidy: Formateador de código Perl.

Ejemplo:

# Ejemplo de código Perl siguiendo algunas convenciones de estilo comunes

my $parametro_uno = 5;
my $parametro_dos = 10;

if ($parametro_uno > 0) {
    print "El parámetro uno es positivo.\n";
} else {
    print "El parámetro uno no es positivo.\n";
}

Documentación:

Python

Estándares de codificación python

Herramientas:

  • flake8: Herramienta de linting que verifica el cumplimiento de PEP 8.
  • black: Formateador de código que sigue las convenciones de estilo para Python.

Ejemplo:

# Ejemplo de código Python siguiendo PEP 8

class MiClase:
    def __init__(self, parametro_uno, parametro_dos):
        self.parametro_uno = parametro_uno
        self.parametro_dos = parametro_dos

    def metodo_ejemplo(self):
        if self.parametro_uno > 0:
            print("El parámetro uno es positivo.")
        else:
            print("El parámetro uno no es positivo.")

Documentación:

Ruby

Ruby

Herramienta:

  • RuboCop: Linter y formateador para Ruby que sigue las convenciones de estilo comunes.

Ejemplo:

# Ejemplo de código Ruby siguiendo algunas convenciones de estilo comunes

parametro_uno = 5
parametro_dos = 10

if parametro_uno > 0
  puts "El parámetro uno es positivo."
else
  puts "El parámetro uno no es positivo."
end

Documentación:

Rust

Rust

Herramientas:

  • rustfmt: Formateador oficial de código Rust.
  • clippy: Linter para Rust que proporciona sugerencias para mejorar el código.

Ejemplo:

// Ejemplo de código Rust siguiendo algunas convenciones de estilo comunes

fn main() {
    let parametro_uno = 5;
    let parametro_dos = 10;

    if parametro_uno > 0 {
        println!("El parámetro uno es positivo.");
    } else {
        println!("El parámetro uno no es positivo.");
    }
}

Documentación:

Más apuntes

Invítame a un café con bitcoins:
1QESjZDPxWtZ9sj3v5tvgfFn3ks13AxWVZ

Bitcoins para café
También puedes invitarme a algo para mojar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar