blog_practicas

Cómo escribir buen código, estándares y buenas prácticas

Un problema común de los programadores es que no seguimos estándares a la hora de escribir código. Esto provoca que sea complicado para otros desarrolladores leer el código de otros. Por esta razón y para tratar de erradicar este problema, en este artículo te enseñaré cómo comenzar mantener las estructuras y reglas comunes para dar formato a lo que escribimos.

Para comenzar, haré una analogía. No tiene que ver con programación, pero nos ayudará a entender para qué sirven los estándares de escritura. ¿Has escuchado hablar de la norma APA? Básicamente busca que exista un conjunto de guías y reglas internacionales que unifiquen los textos que redactamos. Estas nos dicen, incluso, qué papel usar, tipo de letra, márgenes y otras normas más.

En programación esas normas existen. Y debes conocerlas sin importar qué lenguaje uses. Yo, por ejemplo, uso PHP en el Backend; pero si tu trabajas en C#, Java o cualquier otro lenguaje, tu estructura no debe, ni debería, ser diferente a la mía. Siempre he dicho, aprende la sintaxis y luego aprende a programar. Escribir buen código es saber programar. Si ya sabes qué es un if ¡excelente!, ahora busca cómo debe escribirse de forma correcta.

Existen programadores que desarrollan su propio estándar con la intención de que nadie les copie la idea. Es decir, el hecho de que no se entienda su código es intencional. Y eso está mal. Sobre todo porque a los seis meses ni ellos sabrán qué hicieron ni por qué lo hicieron. Lo digo por experiencia propia.

Clases

En un lenguaje de programación orientado a objetos OOP existen clases ¿verdad? Y ¿cómo deberían escribirse?


<?php
namespace Proyecto\CarpetaActual;

use Proyecto\OtroComponente\Clase;

class MiClase extends ClaseSuperior implements iReglasA, iReglasB
{
    //el cuerpo de la clase
}

En el código que vemos arriba podemos observar que extends e implements se usan en la misma línea y que las llaves están en línea. Si todas nuestras clases se escribieran así, nuestra lectura sería automática. Y si todos seguimos una estructura, entenderíamos mas rápido su utilidad y razón de ser.

Por otro lado, es válido que la lista de implements se escriba en varias líneas. Pero va indentada una sola vez. Es decir, a sólo cuatro (4) espacios de la izquierda, sin tabular.


<?php
namespace Proyecto\CarpetaActual;

use Proyecto\OtroComponente\Clase;

class MiClase extends ClaseSuperior implements
    iReglasA,
    iReglasB
{
    //el contenido de la clase
}

Las clases están compuestas por propiedades, constantes y métodos. Y también existe la manera de escribirlos correctamente.

<?php
namespace Proyecto\CarpetaActual;

use Proyecto\OtroComponente\Clase;

class MiClase extends ClaseSuperior implements
    iReglasA,
    iReglasB
{
    public $velocidad = 0;
}

Es importante indicar su visibilidad (public, en este caso) y no colocar como prefijo el underscore o guión bajo; sin importar si la propiedad es privada o protegida.

Ahora veamos cómo declarar los métodos.

<?php
namespace Proyecto\CarpetaActual;

use Proyecto\OtroComponente\Clase;

class MiClase extends ClaseSuperior implements
    iReglasA,
    iReglasB
{
    public $mipropiedad = 0;
    public function miMetodo($parametro1, $parametro2)
    {
        //el contenido del metodo
    }
}

De igual manera que en las propiedades, también debe colocarse la visibilidad. En este caso, mi método es public. Su nombre no debe tener como prefijo el underscore o guión bajo. Y después del nombre del método debe venir inmediatamente el paréntesis. Además, igual que en las clases, las llaves deben estar en línea.

¿Notaste que mi método tiene parámetros o argumentos? Es importante que después de la coma, exista un espacio. Por cierto, los parámetros pueden escribirse en varias líneas; sólo que un parámetro por línea e indentado una sola vez.

<?php
namespace Proyecto\CarpetaActual;

use Proyecto\OtroComponente\Clase;

class MiClase extends ClaseSuperior implements
    iReglasA,
    iReglasB
{
    public $mipropiedad = 0;
    public function miMetodo(
        $parametro1,
        $parametro2
    ){
        //el contenido del método
    }
}

En el código arriba podrás notar cómo cierra el paréntesis del método y dónde abre la llave. De esta manera, tenemos una clase más limpia, de fácil manejo y mantenible. Otra regla común en una clase es llamar métodos entre si, así deberían escribirse:

<?php
namespace Proyecto\CarpetaActual;

use Proyecto\OtroComponente\Clase;

class MiClase extends ClaseSuperior implements
    iReglasA,
    iReglasB
{
    public $mipropiedad = 0;
    public function miMetodo(
        $parametro1,
        $parametro2
    ){
        //el contenido del método
    }
    public function miSegundoMetodo(){
        $variable = 0;
        $variable2 = true;
        $this->miMetodo($variable, $variable2);
    }
}

Puedes ver que no existen espacios en mi llamada. En específico a los paréntesis y método. Sólo debe existir un espacio después de la coma y los parámetros pueden estar en varias líneas pero indentándolos una vez. Veamos:

<?php
namespace Proyecto\CarpetaActual;

use Proyecto\OtroComponente\Clase;

class MiClase extends ClaseSuperior implements
    iReglasA,
    iReglasB
{
    public $mipropiedad = 0;
    public function miMetodo(
        $parametro1,
        $parametro2
    ){
        //el contenido del método
    }
    public function miSegundoMetodo(){
        $variable = 0;
        $variable2 = true;
        $this->miMetodo(
            $variable,
            $variable2
        );
    }
}

Colocar nuestras clases, propiedades, métodos, parámetros y nombre de archivos en ingles es parte del estándar. Pero para entender mejor este ejemplo, las escribí en español.

En este articulo utilicé mucho la palabra indentar. Pero, ¿qué es realmente?

Indentación es un termino que usamos mucho en la informática. Es básicamente mover un bloque de código hacia la derecha insertando espacios o tabuladores. Pero es importante mencinar que en la actualidad sólo se usan cuatro espacios. El objetivo de indentar es mejorar la legibilidad de nuestro código. Un código indentado es un código que se puede leer.

Existen reglas para condicionales, bucles y comentarios también. Pero les dedicaré más tiempo en la siguiente entrega de este artículo. Estos conceptos son importantes para mi, cuéntame en los comentarios si ahora lo son para ti también.