Posts etiquetados ‘estilos’


Después de tanto tiempo escribiendo código PHP ya es hora de revisar nuestro código y nuestra forma de programar para, a partir de ahora, hacerlo de una forma más elegante y compatible con el resto de programadores. Aquí presentamos una guía de estilos de programación para PHP 5.2 o superior. Por supuesto estas no son reglas de obligado cumplimiento, pero sí nos ayudan a estandarizar un poco la forma de programar de todos, haciendo más fácil leer código de otro programador si todos seguimos estas sencillos consejos en la medida de lo posible. Repito, estos no son más que consejos, no leyes.

Apertura y cierre del tag php

Utilizar siempre el tag de apertura completo (<?php) y nunca la versión corta (<?). También es recomendable utilizar el constructor del lenguaje echo y no su versión abreviada (<?= … ?>). Esto nos ahorrará futuros errores si en la configuración del intérprete PHP en el servidor está deshabilitada la variable short_open_tag.

El uso del tag de cierre php (?>) en un documento PHP es opcional para el intérprete de PHP. Sin embargo, si se utiliza, cualquier espacio en blanco introducido a continuación del tag de cierre de php, ya sea por el desarrollador, el cliente FTP, administrador de sistemas, etc, puede provocar una salida inesperada, errores PHP, o incluso si éste es ignorado por el servidor, una página en blanco. Por esta razón, todos los archivos PHP que únicamente contienen código PHP deben omitir el tag de cierre php y en su lugar utilizar un comentario de bloque indicando que se ha llegado al final del archivo y, si se quiere, su ubicación en el sistema de ficheros relativa a la raíz de la aplicación. Este comentario también permite señalar un archivo como completo y que no está truncado.

Correcto

<?php
        echo "Here is my code!";
/* End of file myfile.php */
/* Location: /path/to/myfile.php */

Incorrecto

<?= "Here's my code!"; ?>

Globales, Constantes y Defines

Para nombrar constantes, valores globales y valores definidos mediante la estructura define, han de utilizarse nombres con todas las letras en mayúsculas, separados por guiones bajos si contienen más de una palabra y procurar que sean nombres descriptivos y con sentido, facilitando así su lectura en el futuro, tanto para el propio desarrollador como para otros desarrolladores.

Correcto

MI_CONSTANTE
define('VALOR_FIJO',1);

Incorrecto

miConstante // Evitemos utilizar camelCase
N // Constantes de una sola letra no nos dicen nada
S_C_VER // Este nombre no es descriptivo

Nombres de clases y métodos

Los nombres de clases han de comenzar siempre con una letra en mayúsculas. Los nombres con varias palabras han de separarse con guión bajo y no utilizar el estilo camelCase. Los nombres de los métodos de la clase han de escribirse siempre en minúsculas y procurar ser autodescriptivos, es decir, dejar bastante claro cuál es la funcionalidad del método, preferiblemente incluyendo un verbo. Por supuesto, los nombres de métodos de clase también han de utilizar guiones bajos para separar las palabras que lo componen. Hemos de evitar utilizar nombres de métodos excesivamente largos o con palabras redundantes.

Los nombres de métodos que únicamente son accedidos internamente por nuestra clase (métodos privados) deben ir precedidos por un guión bajo.

Los constructores de clase han de utilizar el estilo PHP5 (public function __constructor()) y no utilizar el estilo de PHP4, es decir, utilizar el nombre de la clase como constructor. Hemos de utilizar destructores de clase cuando sea apropiado.

Se recomienda declarar explícitamente la visibilidad de variables miembro de clase así como de los métodos.

Correcto

class Super_class
public function get_file_properties() //descriptivo, separado por guiones bajos, todas las letras en minúsculas y visibilidad declarada
private function _parse_string() //Igual que los métodos públicos pero precedido por guión bajo

Incorrecto

class superclass
class SuperClass
function fileproperties() // no descriptiva y sin guiones bajos
function get_the_file_properties_from_the_file() // demasiado larga y con palabras redundantes

Nombres de variables

Los estilos usados para los nombres de variables son muy similares a los utilizados para los métodos y miembros de clases. Las variables únicamente han de contener letras en minúsculas, separadas por guiones bajos y procurar ser autodescriptivas, es decir, tener un nombre que permita conocer cuál es la funcionalidad de dicha variable. Las variables con un nombre muy corto o con nombres que no sean palabras han de reservarse exclusivamente para los bucles for().

Correcto

for($j = 0; $j < 10; $j++)
$buffer
$group_id
$last_city

Incorrecto

$j = 'This a string'; // Variables de una sola letra han de reservarse para bucles for
$Str // no utilizar letras mayusculas en variables
$name_of_the_last_city // demasiado largo con palabras innecesarias

True, False y Null

Las palabras claves TRUE, FALSE y NULL han de escribirse siempre con todas sus letras en mayúsculas, dado que al ser valores propios de PHP se pueden considerar constantes, y por lo tanto, escribirse como tales.

Correcto

if (TRUE == $foo)
$bar = FALSE;
function foo( $bar = NULL)

Incorrecto

if( $foo == true)
$bar = false;

Estructuras de control

Con esto nos referimos a las estructuras if, for, while, switch, etc. Las estructuras de control han de tener un espacio en blanco entre la palabra clave de control y la apertura del paréntesis, para distinguirlo así de las llamadas a funciones.

Se recomienda utilizar siempre los abre y cierra llaves, incluso en situaciones donde son técnicamente opcionales. Si los ponemos aunque no sean necesarios, aumentamos la legibilidad del código y reducimos el riesgo de errores lógicos cuando queremos añadir nuevas líneas al bloque de control.

Se recomienda colocar el abre llaves del bloque a ejecutar en una línea nueva tras las condiciones a cumplir, delimitando así claramente cada bloque a ejecutar.

Correcto

if ((condicion1) || (condicion2))
{
    accion1;
}

Separar largas condiciones if en varias lineas

Las condiciones de bloques if se pueden separar en varias líneas si se excede el número límite de caracteres por línea. Las condiciones tiene que ser colocadas en una nueva línea e indentadas 4 caracteres. Los operadores lógicos (&&, ||, etc) deben colocarse al comienzo de cada nueva línea, facilitando así el comentar (y excluir) dicha condición. El cierre del paréntesis y de la llave han de colocarse en una nueva línea al final de las condiciones.

El colocar los operadores al comienzo de cada nueva línea tiene 2 ventajas:

  1. Es extremadamente fácil comentar y exlcuir una condición durante el desarrollo y prueba del código manteniendo bloque sintácticamente correcto.
  2. Revisar cada una de las condiciones es muy sencillo dado que todas están alineadas una debajo de otra.

Correcto

if (($condition1)
    || ($condition2)
    || ($condition3)
) {
    accion1
}

Comparación de variables y literales

Cuando se hacen comparaciones lógicas, ha de colocarse siempre la variable en el lado derecho del comparador. De esta forma, si olvidamos un signo de igual (=) en el comparador se lanzará un error en el intérprete de PHP en lugar de asignar el literal a la variable y que se cumpla como verdadera la asignación, procediendo a ejecutar el contenido del bloque. Realmente no cuesta nada hacerlo así y nos ahorraremos muchos dolores de cabeza de depuración de errores.

Correcto

if ('rock' == $music)
if (NULL == $name)

Incorrecto

if ($music == 'rock') // corremos el riesgo de hacer if ($music = 'rock')

Arrays

La asignación de los valores de un array han de estar alineadas cuando es necesario separarla en varias líneas. Así mismo, cada nueva línea ha de comenzar con una coma (,) separando este nuevo valor del anterior. Esto nos permite comentar dicha línea (y evitar la inclusión de ese par clave/valor) y mantener el bloque del array sintácticamente correcto. El cierre del paréntesis ha colocarse también en una nueva línea al final del array.

Correcto

$un_array = array (
    'foo'   => 'bar'
    ,'spam' => 'ham'
    ,'you'  => 'me'
);

Con esta guía simplemente pretendemos ayudarles a darle un formato más homogéneo a tu código PHP y facilitar la compartición y lectura de código entre varios programadores PHP. Por supuesto, los estilos son como los colores, cuestión de gustos, pero al menos sobre estilos de programación sí hay algo escrito.