Pautas de estandarización de código

Código legible y limpio.

Evitar mezclar código de funcionamiento similar.

//Ejemplo: 
	echo: $variable_1;
	echo: $variable_2; 
//En lugar de:
	echo: $variable_1;
	echo($variable_2);

Tabulación a 4 espacios.

CRLF solamente a LF.

Correcto uso de los espacios.

Ejemplo:
    if($variable_1 == 'true'){
        //code
    }
En lugar de:
    if ( $variable_1 == 'true' )
    {
        //code
    }

Parámetros de salida al comienzo.

Ejemplo: 
    function my_function(){
    	if($variable_1 == null){
    		return: 0;
    	}
    	//resto del codigo
    }
En lugar de:
    function my_function(){
    	if($variable_1 != null){
    		//realizar codigo
    	}
    }

Código en inglés.

Pese a que la página pueda estar en varios idiomas, por estándar lo correcto sería que nuestra programación se realice en inglés.

Ejemplo:
	$first_pos = ‘something’;
En lugar de:
	$primera_posicion = ‘algo’;

Variables autodescriptivas.

Una variable debe ser entendible por el nombre que contenga, considerando ser lo más breve posible.

Ejemplo:
	$host_locations = json_decode($response);
En lugar de: 
	$response =  json_decode($response);
O de:
	$x =  json_decode($response);

Dividir y vencer

Realizar funciones y código atómico para tareas repetitivas.
Implementar funciones ayuda a mantener el programa con la menor cantidad de código repetido y granular las funciones para un mantenimiento más sencillo.

Ejemplo:
	function render_instruments(){
		$instruments = array( 'drum', 'trumpet', 'fiddle', '...', 'saxophone' );
    		foreach( $instruments as $instrument ) {
			echo $instrument;
			}
	}
En lugar de: 
	$instruments = array( 'drum', 'trumpet', 'fiddle', '...', 'saxophone' );
	echo $instruments[0] = 'drum';
	echo $instruments[1] = 'trumpet';
	echo $instruments[2] = 'fiddle';
	…
	echo $instruments[20] = 'saxophone';	

Operadores ternarios cuando sea conveniente

Fomentar el correcto uso de operadores ternarios cuando no afecten a la legibilidad del código.

Ejemplo:
	$user_name = $user_id === 1 ? 'Paty' : 'Diego'
		
En lugar de:
	if ( $user_id === 1 ){
		$user_name = 'Paty';
	} else if ( $user_id === 2 ){
 		$user_name = 'Diego';
	}
Sin embargo:
	if ( $user_id === 1 ){
		$user_name = 'Paty';
	}elseif($user_id === 2){
		 $user_name = 'Diego';
	}else{
		throw exception
	}
En lugar de:
	$user_name = $user_id === 1 ? 'Paty' : ( $user_id === 2 ? 'Diego' : throw exception );	

Notación

Por convenio y preferencia de los usuarios, la notación a utilizar será “Snake Case”

Ejemplos de definición de variables
	$is_granted;
	$first_pos;
	<div id=”today_date”></div>
Ejemplos de definición de funciones
	function get_custom_users(){
		//code
	}

Teniendo como excepción el manejo de clases según le convenga al lenguaje de programación a utilizar, donde en la mayoria de los casos las clases se nombran con CamelCase

class LeadsController extends Controller {
	/**
	 * Show all Leads and person asociated
	 */
	 ...
	 ...
	 ...

Booleanos con prefijo (is)

Siguiendo la lógica de programar en inglés y por estándar, lo correcto será utilizar el prefijo “is” al declarar una variable booleana o al crear una función cuyo propósito sea regresar una respuesta similar.

Ejemplo de variables:
	$is_admin;
	$is_active;
Ejemplo de funciones:
	function is_gapped(){
		//code
	}

Correcta documentación de código y separación

Será necesario realizar comentarios básicos del funcionamiento del código, así como pistas que apoyen a la descripción de variables y la fácil búsqueda de qué parte del código se encuentra.

Ejemplo:
	/*___ Get Admins ___*/
	function get_admin_users(){
		//Queried function to get all users.
		return get_users( array( 'role__in' => array( 'author', 'subscriber' ) ) ); 			
	}

Comparación explícita

Como método de prevención de errores, lo correcto será utilizar comparaciones explícitas dentro de las estructuras de control.

Ejemplo:
	$boolean = true;
	if($boolean == true){
		//code
	}else if($boolean == false){
		//code
	}else{
		throw exception
	}

Validación de cadenas vacías

Como método de prevención de riesgos, lo correcto será utilizar las herramientas que el lenguaje nos pueda proporcionar.

Ejemplo:
	is_null();
	isset();
	empty();

Evitar variables innecesarias

Tanto en php como en Javascript se puede eficientar el código evitando la creación de variables innecesarias.

Ejemplo php:
	echo get_post_meta(user_id,’post-status’,true);
En lugar de:
	$post_status = get_post_meta(user_id,’post-status’,true);
	echo $post_status;

Evitar múltiple uso de queries y accesos a DOM.

Adicional al punto anterior, cuando se necesite realizar múltiples consultas en cualquier lenguaje, lo correcto será realizar la consulta una sola vez y apoyarnos de una variable.

Ejemplo Javascript:
	obj = document.getElementById("texto");
	obj.innerHTML = "Hola Mundo";
	obj.style.color = “red”;
En lugar de:
	document.getElementById("texto").innerHTML = "Hola Mundo";
	document.getElementById("texto").style.color = “red”;
Ejemplo PHP:
	$admin_users = get_users( array( 'role__in' => array( 'author', 'subscriber' ) ) ); 
	var_dump($admin_users);
	var_dump(filter_users($admin_users));
En lugar de:
	var_dump(get_users( array( 'role__in' => array( 'author', 'subscriber' ))));
	var_dump(filter_users(get_users( array( 'role__in' => array( 'author', 'subscriber' )))));

Manejo de excepciones

El uso correcto de las excepciones apoya a un manejo de errores que no rompa la funcionalidad del código.

Ejemplo PHP:
	//create function with an exception
	function checkNum($number) {
		if($number>1) {
			throw new Exception("Value must be 1 or below");
		  }
		return true;
	}
	//trigger exception in a "try" block
	try {		
		checkNum(2);
    	 //If the exception is thrown, this text will not be shown
    	echo 'If you see this, the number is 1 or below';
	}
	//catch exception
	catch(Exception $e) {
		echo 'Message: ' .$e->getMessage();
	}
Ejemplo Javascript:
	try {
		adddlert("Welcome guest!");
	}
	catch(err) {
	    document.getElementById("demo").innerHTML=error.message;
	}

Uso de jQuery.

Por convenio, la recomendación será utilizar jQuery como método de acceso al DOM cuando sea necesario.

Evitar consultas a base de datos.

Por convenio, la recomendación será utilizar jQuery como método de acceso al DOM cuando sea necesario.

Evitar consultas a base de datos.

WordPress ofrece una gran cantidad de funciones de consulta de datos, por lo que siempre que sea posible se evitarán las consultas directas a la base de datos.

Evitar componentes dependientes de terceros.

Con motivo de evitar las dependencias de funciones de terceros, siempre que sea posible lo correcto será intentar obtener el código a utilizar y añadirlo al wordpress.

Método KISS.

KISS es un acrónimo de Keep It Simply Stupid (Mantenlo Simplemente Estupido) un código simple y fácil de entender a la larga es mucho más fácil de mantener, por lo que vale la pena en ocasiones sacrificar un poco de rendimiento a pro de que el código cumpla este método.

Utilizar un IDE estándar.

Por motivos de convenio, se utilizará el mismo IDE cuando se trabajen proyectos fuera de wordpress. Se utilizará VSCode

Implementar un software de control de versiones.

Se implementará git como software de control de versiones.