miércoles, 29 de septiembre de 2021

Convenciones de escritura de código

Sangría y espacio en blanco

Utilizar un espaciado cuádruple, sin tabulación.

Las líneas no deben tener espacios en blanco detrás al final.

Los archivos deben tener el formato n como el final de línea (finales de línea Unix), no r n (terminaciones de Windows de línea).


Operadores

Todos los operadores binarios (operadores que se encuentran entre dos valores), como +, -, =,>! =, ==, , etc deben tener un espacio antes y después de que el operador, para mejorar la legibilidad.


Casting

Poner un espacio entre el (tipo) y la variable $ en un molde: (int) $myNumber .


Estructuras de control

Estructuras de control, que incluyen if, for, while, switch, etc Este es un ejemplo if, ya que es el más complicado de ellos:

if (condition1 | | condition2) {
     Acción 1;
}
elseif (Condition3 && condition4) {
     Acción 2;
}
else {
     DefaultAction;
}

Las sentencias de control debe tener un espacio entre la palabra clave de control y su paréntesis de apertura, para distinguirlas de las llamadas a funciones.

Se recomienda utilizar siempre llaves, incluso en situaciones en las que técnicamente son opcionales. Aumenta la legibilidad y disminuye la probabilidad de errores lógicos que se presentan cuando se añaden líneas nuevas.

Para declaraciones:

switch (estado) {
    case 1:
         Acción 1;
         break;
    case 2:
        Acción 2;
        break;
    default:
        DefaultAction;
}

Para las declaraciones do-while:

do {
    acciones;
} While ($estado);


Llamadas a funciones

Las funciones se deben llamar sin espacios entre el nombre de la función, el paréntesis de apertura, y el primer parámetro.

Espacios entre las comas y cada parámetro.

Ningún espacio entre el último parámetro, el paréntesis de cierre, y el punto y coma.

He aquí un ejemplo:

$var = foo ($bar, $baz, $quux);

Como se muestra más arriba, debe haber un espacio a cada lado de un signo igual se utiliza para asignar el valor devuelto de una función a una variable. En el caso de un bloque de tareas relacionadas, más espacio se pueden insertar para promover la lectura:

$sort          = foo ($bar);
$long_variable = foo ($baz);


Declaracion de funciones

Clases

Cuando se llama a los constructores de clase sin argumentos, siempre incluyen entre paréntesis:

$foo = new myClassName ();

Esto es para mantener la coherencia con los constructores que tienen argumentos:

$foo = new myClassName ($arg1, $arg2);

Tened en cuenta que si el nombre de la clase es una variable, la variable se evalúa en primer lugar para obtener el nombre de la clase, a continuación, el constructor se llamará. Utilizad la misma sintaxis:

$bar = 'myClassName';
$foo = new $bar ();
$foo = new $bar ($arg1, $arg2);

Matrices

Las matrices deben tener el formato con un espacio que separa cada elemento (después de la coma), y los espacios alrededor del operador => asociación clave, si procede:

$some_array = array ('hola', 'mundo', 'nombre' => 'bar');

Tenga en cuenta que si la línea se declara una matriz se extiende por más de 80 caracteres (a menudo el caso con las declaraciones de la forma y el menú), cada elemento debe ser dividido en su propia línea, y un nivel de sangría:

$ Form ['title'] = array (
'Tipo # ' => 'campo de texto',
'Título de # ' => t (' Título '),
'# Size' => 60,
'# MaxLength' => 128,
'Descripción # ' => t (' El título de tu nodo. ')
);


Acotaciones y comentarios

Las funciones, métodos, clases y atributos deben estar comentados siguiendo el modelo phpDoc.
Los comentarios de linea deber realizarse utilizando la doble barra.

//Comentario de una línea

Llegado el momento de implementar una función o método que es bastante profundo (usa otros métodos y estos a otros que aún no están implementados) podemos hacer una implementación rápida de las funciones no implementadas agregado un retorno por defecto y el comentario TODO con el texto de qué debe de hacer esa función.

También se usan en caso de que implementando un código, nos damos cuenta de que no es todo lo eficiente que debería, pero no tenemos tiempo para dedicar a esa parte del código. En ese caso, podemos agregar un FIXME o TODO, depende si puede convertirse en problema o no.

En caso de que haya un caso (aunque remoto) en el que el código falla, pero no conseguimos encontrar exactamente el problema, o el problema es complejo de resolver, podemos indicarlo en la zona que creemos que se produce a través de FIXME.

Revisando nuestro código podemos refactorizar varias partes de nuestro código pero sin embargo, si el cambio es muy grande, dejamos envolturas (wrappers) que nos permiten no tener que cambiarlo todo, manteniendo una interfaz entre unas llamadas a funciones con sus parámetros de entrada y salida. Esto podemos marcarlo como DEPRECATED indicando que este uso concreto debe de modificarse en el futuro.


Includes

En cualquier lugar donde se esté incluyendo un archivo de clase tendremos que incluir require_once () . En cualquier lugar donde se esté incluyendo un archivo de clase (por ejemplo, los métodos Factory), habrá que usar include_once () . Cualquiera de estas asegurará de que los archivos de clase se incluyen sólo una vez. Ellos comparten la misma lista de archivos, por lo que no es necesario preocuparse por la mezcla de ellos – un archivo incluido con require_once () no se incluirá de nuevo por include_once () .

Nota: include_once () y require () son declaraciones, no las funciones. No necesitas paréntesis alrededor del nombre de archivo que se incluye.

Al incluir el código desde el mismo directorio o subdirectorio, iniciar la ruta del archivo con extensión “.”:

include_once(‘. /includes/mymodule_formatting.inc’);


Funciones y variables

Funciones deben ser nombradas con  “lowerCamelCase”.

Las variables deben ser nombrados con minúsculas, y las palabras deben estar separadas por un guion bajo "snake_case".


Las variables persistentes

Las variables persistentes (variables / valores definidos por el uso de Drupal variable_get () / variable_set () funciones) debe ser nombrado con letras minúsculas, y las palabras deben estar separadas por un guión. Se debe utilizar el módulo de nombre de agrupación como un prefijo para evitar conflictos de nombres entre los módulos.


Constantes

Constantes siempre debe ser todo en mayúsculas, con caracteres de subrayado para separar palabras. Esto incluye las constantes de PHP predefinidas como TRUE, FALSE y NULL. nombres de constantes definidas por el módulo también debe ser precedido por una ortografía mayúsculas del módulo que se definen por.


Variables globales

Si es necesario definir las variables globales, su nombre debe comenzar con un solo guión seguido por el módulo / nombre del tema y otro subrayado.


Clases

Las clases deben ser nombrados con “CamelCase” y en plural.

Los métodos de clase y las propiedades deben utilizar “lowerCamelCase”:

Los atributos deben ser nombrados con "snake_case".

En general los nombres de los archivos deben coincidir con los nombres de las clases y siguen los estándares PSR-0 o PSR-4 para cargarse automáticamente.


Controlador

Los nombres de las clases Controlador son en plurar, en formato CamelCase, y finalizan con Controller. Ejemplos de nombres son: UsuariosController y CategoriasArticulosController.


STRINGs

Los strings deben estar incluidos dentro de comillas dobles " y no de simples '.

En la medida de lo posibles las variables deben estar fuera de las comillas usando una concatenación de strings o un remplazo de texto.

Concatenaciones de cadenas

Utiliza siempre un espacio entre el punto y las partes concatenados para mejorar la legibilidad.

Al concatenar variables simples, puede utilizar las comillas dobles y añadir la variable en el interior, de lo contrario, utilice comillas simples.

Cuando se utiliza el operador de concatenación de (‘.=’), utilizar un espacio a cada lado

El símbolo utilizado para la concatenación en PHP es el PUNTO (.)

<?php
echo "Total  =  "  .  $cantidad  *  $costo ;
//se concatena la cadena con el resultado de la operación
?>


Consultas SQL

Las consultas a la base de datos deben respetar el siguiente formato:

Palabras reservadas en MAYUSCULA. 

Ejemplo SELECT, WHERE, JOIN

Las consultas a múltiples tablas deben, en la medida de lo posible, realizarse por medio de JOINs.

Las consultas a la base de datos deben estar parametrizadas para mejorar los tiempos de respuesta del servidor.

En el diseño de tablas los nombres de los campos y tablas deben estar en minúscula separado por guion bajo y en el caso de las tablas en plural. 


Coment


ANEXO

1. PascalCase

La primera letra del identificador y la primera letra de las siguientes palabras concatenadas están en mayúsculas. El estilo de mayúsculas y minúsculas Pascal se puede utilizar en identificadores de tres o más caracteres, por ejemplo: MiClase

2. camelCase

La primera letra del identificador está en minúscula y la primera letra de las siguientes palabras concatenadas en mayúscula, por ejemplo: unaPropiedad

3. ALL_CAPS

Todas las letras del identificador se encuentran en mayúsculas y las palabras se separan por un guión bajo _. Ejemplo UNA_CONSTANTE

4. small_caps

Todas las letras del identificador se encuentran en minúsculas y las palabras separadas por _. Ejemplo: una_funcion

5. Proper_Case

Como CamelCase, pero cada inicio de palabra separado por un _. Se usa muy poco.