Convenios de codificación de Drupal

LIBP-0124 (Libro de pautas)

Estándar de codificación de Drupal

La comunidad Drupal ha considerado necesario la introducción de una serie de estándares que faciliten la legibilidad y estructuración del desarrollo de código para Drupal. A continuación se van a ofrecer una serie de indicaciones para la codificación php en Drupal.

Pautas

TítuloCarácter
Etiquetas de apertura y cierre en PHPObligatoria
Etiqueta de cierre al final del código de los archivosObligatoria
Sangría de lineasObligatoria
Estructuras de ControlObligatoria
Llamadas a funciónObligatoria
Declaración de funcionesObligatoria
OperadoresObligatoria
CastingObligatoria
Longitud de líneasObligatoria
Manejo del arrayObligatoria
Llamadas al método constructor de la claseObligatoria
Concatenación de cadenasObligatoria
Punto y comaObligatoria
Definición de constantesObligatoria
Nomenclatura de clases y métodosObligatoria
Definición de nombres de archivosObligatoria

Etiquetas de apertura y cierre en PHP

Utilizar <?php y ?> para delimitar el código PHP

En Drupal se utilizan los siguientes principios para el manejo de las etiquetas de apertura y cierre de código PHP:

  • Utilice <?php     ?> para delimitar el código PHP
  • La etiqueta de apertura simplificada, <?    ?> nunca debe usarse

Etiqueta de cierre al final del código de los archivos

No utilizar la etiqueta de cierre ?> al final del código de los archivos

La etiqueta de cierre, ?> no es necesaria y no se usa en el código Drupal

Nota: a partir de Drupal 4.7, el “?>” al final del código de los archivos, es omitido deliberadamente.

Las razones para esto se pueden resumir como:

  • Elimina la posibilidad de espacios en blanco indeseados al final de los archivos, lo cual puede causar errores "header already sent" (cabecera ya enviada), problemas de validación XHTML/XML y otros problemas.
  • El delimitador de cierre al final de un archivo es opcional
  • PHP.net elimina por sí mismo el delimitador de cierre al final de sus archivos (ejemplo:prepend.inc), por lo que puede ser visto como una “buena práctica”.

Sangría de lineas

Usar una sangría de dos espacios, sin tabulaciones

El código debe tener dos espacios en blanco para la sangría, que no sean tabulaciones.

Estructuras de Control

Las estructuras de control deben mantener un espacio simple entre la palabra clave

Las estructuras de control son instrucciones que controlan el flujo de la ejecución de un programa.

  • Las instrucciones condicionales son if, else, elseif y switch
  • Para el control de bucles tenemos while, do-while, for y foreach.

Las estructuras de control deben mantener un espacio simple entre la palabra clave (if, while, etc.) y el paréntesis de apertura que visualmente los distingue de las llamadas a una función. La llave de apertura debe de estar en la misma línea que la palabra clave.

Llamadas a función

No existirán espacios en blanco entre el nombre de la función y el paréntesis de apertura de la función

En las llamadas a funciones debe existir un espacio simple con el operador (=,<,>,etc...) y no existir espacios entre el nombre de la función y el paréntesis de apertura de la función.

Tampoco hay espacio entre el paréntesis de apertura y el primer parámetro. Los parámetros se separan con una coma y un espacio.

Declaración de funciones

Listar los parámetros por defecto de las funciones

No debe de existir espacios entre el nombre de la función y el paréntesis de apertura. Cuando escriba una función que utilice valores por defecto para algunos parámetros, liste estos parámetros.

Las funciones deben ser nombradas usando minúsculas y las palabras deben ser separadas utilizando un guión bajo. Las funciones deben tener además el nombre del grupo/módulo como prefijo, para evitar el conflicto de nombres entre los módulos.

Operadores

Colocar un espacio en blanco antes y después de cada operador binario

Todos los operadores binarios (operadores que están entre dos valores), como +. -, +=, !=, ==,> etc. Deben tener un espacio antes y después del operador, para facilitar la lectura.

Casting

Colocar un espacio entre el (tipo) y la $variable en una transformación

Colocar un espacio entre el (tipo) y la $variable en una transformación. Por ejemplo, (int) $mynumber

Longitud de líneas

Las líneas de código no deben tener más de 80 caracteres

  • La longitud de la líneas de código no debe superar los 80 caracteres.
  • Las líneas que contengan nombres largos de funciones, definiciones de función/clase, declaraciones de variable, etc pueden superar los 80 caracteres.
  • Las condiciones de las estructuras de control pueden exceder los 80 caracteres, si es que son simples de leer y entender. Las condiciones no deben ser encapsuladas en líneas múltiples. En cambio, es una práctica recomendada dividir y preparar las condiciones por separado, lo cual también permite documentar las razones subyacentes de las condiciones

Manejo del array

Cada elemento del array debe moverse a su propia línea si el bloque del array tiene más de 80 caracteres

Los arrays están formateados con espacios separados para cada elemento y cada operador de asignación.

Si el bloque de un array tiene más de 80 caracteres, es una buena práctica para facilitar la legibilidad y mantenibilidad, mover cada elemento a su propia línea.

Llamadas al método constructor de la clase

Incluir siempre los paréntesis cuando se llama a una clase constructora sin argumentos

Cuando se llame a una clase constructora sin argumentos, siempre incluya los paréntesis:

Tenga en cuenta que si el nombre de la clase es una variable, la variable primero deberá ser evaluada para obtener el nombre de la clase, y después el constructor deberá ser llamado. Use la misma sintaxis.

Concatenación de cadenas

Utilizar un espacio entre el punto y las partes concatenadas

Siempre use un espacio entre el punto y las partes concatenadas para mejorar la legibilidad.

Cuando concatena variables simples, puede usar comillas dobles y agregar la variable dentro, en otro caso, use comillas simples.

Cuando use el operador de “concatenación-asignación” (‘.=’), use un espacio en cada lado como en el operador de asignación

Punto y coma

Utilizar siempre el punto y coma (;) al final de cada línea, incluso de los bloques de código

El lenguaje PHP requiere puntos y comas al final de la mayoría de las líneas, pero permite ser omitidos al final de bloques de código. Los Estándares de programación de Drupal los requieren, incluso al final de bloques de código.

Definición de constantes

Escribir las constantes en mayúsculas

Las constantes deben de escribirse en letras mayúsculas, con separadores entre cada palabra.

Nomenclatura de clases y métodos

Utilizar "CamelCase" para nombrar las clases

Las clases deben ser nombradas usando "CamelCase."

Los métodos y propiedades de clases deben usar "lowerCamelCase"

Definición de nombres de archivos

Todos los archivos de documentación deben tener en el nombre la extensión

Todos los archivos de documentación deben tener en el nombre la extensión “.txt” para hacer más fácil su lectura en sistemas Windows. Además los nombres para este tipo de archivos deben ser todo en mayúsculas. Ejemplos: README.txt, INSTALL.txt, TODO.txt, CHANGELOG.txt etc.

Contenidos relacionados

Recursos