Sunteți pe pagina 1din 6

Algunas pautas de programacin Es importante desarrollar con estndares de cdigo sin importar si el proyecto es de un nico desarrollador o si es en equipo.

Los estndares permiten que el cdigo que desarrollamos sea de mejor calidad, que el mantenimiento de nuestros programas se vuelva menos complejo, y provoca que baje la tasa errores ingenuos. A continuacion se puede leer un resumen del estndar de codificacin de Zend Framework para PHP. Estilo de cdigo Siempre utilizar la etiqueta inicial de PHP de forma completa ("<?php") para empezar con el cdigo. Si el archivo contiene nicamente cdigo PHP, la etiqueta de cierre no es requerida ("?>"), ms bien se recomienda omitirla para evitar inyeccin de espacios en blanco en la respuesta. Se recomienda usar indentacin de 4 espacios. Se debe configurar el editor de texto para convertir las tabulaciones a espacios en blanco. Se recomienda que el ancho de una lnea de cdigo sea de 80 caracteres o menos. Siendo el tamao mximo de 120 caracteres. Strings (cadenas de caracteres) Cuando un string no contiene sustitucin de caracteres, debe usar comilla simple como delimitador. $a = 'Un texto de ejemplo'; Cuando un string contiene apstrofes, se permite delimitar dicho string con "comillas dobles". $sql = "SELECT `img` FROM `tweets` where `uid` = '1'"; La sustitucin de variables est permitida en cualquiera de estas dos maneras: $retweet = "$tweet (via @$user_from)"; $retweet = "{$tweet} (via @{$user_from})"; Fragmentos de strings deben de concatenarse (unirse) utilizando el operador punto (".") y se debe dejar un espacio antes y despus de dicho operador para mejorar la legibilidad: $reply = '@paviles' . ' ' . 'Hi, buddy!!'; Cuando se concatenan varios fragmentos de texto usando el operador ".", se recomienda partir en varias lneas la sentencia, y as mejorar la legibilidad. Cada lnea debe iniciar con un margen de espacios en blanco de manera que el operador "." quede alineado debajo del operador "=" de la primera lnea: $sql = "SELECT `user`, `user_img`, `tweet` " . "FROM `tweets` " . . "WHERE `if_active` = 1 " . "ORDER BY `date` desc"; Arrays (arreglos) No se permiten los nmeros negativos como ndices. Los ndices en arreglos de ndices numricos, pueden inciar con cualquier valor no negativo,

pero no se recomienda que inicien con un valor distinto al 0. Para mejorar la legibilidad, se debe agregar un espacio despus de cada coma de separacin de los ndices en la declaracin del array: $diasArreglo = array(1, 2, 3, 4, 5, 6, 7); Se pueden hacer declaraciones de los arrays en varias lneas, siempre y cuando los inicios estn alineados (identados) igual: $mesesArreglo = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ); Se recomienda hacer la declaracin de los arrays asociativos divididos en diferentes lneas. Se recomienda dejar espacio antes y despus de los operadores de asignacin => y de forma que queden alineados: $arregloSimple = array( 'primerIndice' ); Clases La llave "{" debe escribirse en la lnea siguiente al nombre de la clase ("one true brace"). Debe existir una documentacin (PHPDocumentor) para cada clase. El cdigo de la clase debe estar indentado (cuatro espacios). Slo se permite una clase por archivo PHP. No se recomienda incluir cdigo adicional en archivos de clase. Si se hace, deben distinguirse el cdigo de la clase con dos lneas en blanco. En la medida de lo posible, se deben declarar las dependencias en la misma lnea para las clases que extiendan otras clases o interfaces. Si la lnea es muy grande, entonces se puede partir la declaracin antes de las palabras extends e implements y se debe indentar. class ClaseEjemplo extends FooAbstract implements BarInterface { } Si la clase implementa mltiples interfaces y la declaracin excede el largo mximo de la lnea, se puede partir la declaracin despus de cada coma, y se debe indentar de modo que los nombres de las interfaces queden alineados: class ClaseEjemplo implements BarInterface, BazInterface { => 'primerValor', 'segundoIndice' => 'segundoValor',

} Las variables que son miembros de una clase, debe ser listada en la parte superior de la clase, por encima de las declaraciones de cualquier mtodo. No se permite la construccin var. Las variables que son miembro de una clase declaran su visibilidad con los modificadores private , protected , o public. No se aconseja que las variables sean public, sino que se recomienda usar mtodos de acceso (set y get). Funciones y mtodos Los nombre de las funciones deben estar de acuerdo a las convenciones de nombrado de Zend Framework. Los mtodos dentro de las clases deben declarar su visibilidad usando modificadores como prvate , protected , o public. La llave "{" debe escribirse en la siguiente lnea del nombre de la funcin ("one true brace"). No se permite un espacio entre el nombre de la funcin y el parntesis de apertura de los argumentos. No se permiten las funciones con un alcance global. En caso de que los argumentos sobrepasen el tamao mximo de la lnea, se puede partir la declaracin: /** * Aqu va la documentacin de la clase */ class Foo { /** * Aqu va la documentacin de la funcin */ public function bar($arg1, $arg2, $arg3, $arg4, $arg5, $arg6 ) { // cdigo de la funcin // debe ir indentado. } } No se permite la llamada por referencia a los parmetros. El valor de retorno no debe estar indicado entre parntesis. Los valores de los argumentos en una funcin deben separarse por un espacio despus de la coma: tresParametros(1, 2, 3); Al pasar arreglos como argumentos de una funcin, se puede utilizar el indicador y se pueden separar en varias lneas para facilitar la legibilidad: tresParametros(array(1, 2, 3, 'bot', 'paviles',

$a, $b, $c, 56.44, $d, 500), 2, 3); tresParametros(array( 1, 2, 3, 'mashups', 'paviles', $a, $b, $c, 56.44, $d, 500 ), 2, 3); Sentencias de control Las sentencias de control basadas en if y elseif deben tener un nico espacio en blanco antes del parntesis inicial y un nico espacio en blanco despus del parntesis final. Los operadores dentro de la condicin deben separarse con espacios. Es recomendable usar parntesis internos para mejorar la agrupacin de las expresiones condicionales largas. La llave de inicio "{" debe estar en la misma lnea que la condicin, mientras que la de cierre "}" debe estar sola. El cdigo dentro de las llaves debe estar indentado: if ($a != 2) { $a = 2; } Si el largo de la condicin es mayor al largo mximo de la lnea, y la condicin tiene varias clusulas, se puede partir en varias lneas: if (($a == $b) && ($b == $c) || (Foo::CONST == $d) ) { $a = $d; } Toda sentencia "if", "elseif" o "else" debe usar llaves de apertura { y cierre } sin excepcin. Se recomienda utilizar else if en vez de "elseif". El cdigo dentro del bloque del "switch" debe estar indentado, y el cdigo dentro de cada "case" estar indentado adicionalmente: switch ($respuestaPregunta) { case 1: break; case 2: break; default: break;

} Nunca se debe omitir la construccin default en una declaracin switch . Para evitar errores, si se omite intencionalmente un break dentro de un case, debe escribirse un comentario justificando el por qu. Documentacin integrada Los "docblocks" (bloques de documentacin) deben ser compatibles con el formato de phpDocumentor. Los archivos de clase deben contener un docblock al inicio del archivo y un docblock inmediatamente antes de cada clase. Cualquier archivo con cdigo PHP debe tener un docblock al inicio del archivo, y debe contener al menos las siguiente etiquetas: Descripcin corta del archivo, Descripcin larga del archivo, LICENSE, @category, @package, @subpackage, @copyright, @license, @version, @link, @since Toda clase debe contener un docblock con al menos las siguientes etiquetas: Descripcin corta de la clase, descripcin larga de la clase, @category, @package, @subpackage (opcional), @copyright, @license, @version, @package_version, @link, @since, @deprecated Para las funciones y mtodos de los objetos, los docblocks deben contener como mnimo: Una descripcin de la funcin, todos los argumentos de la funcin y su descripcin, los posibles valores de retorno. Convencin de nombres
Archivos

Internamente, los archivos PHP no deben contener caracteres de retorno de carro ([0x0D] o [0x0D, 0x0A]). Sino que las lneas deben acabar con el carcter de fin de lnea ([0x0A]). Los nombres de los archivos slo pueden contener caracteres alfanumricos, guiones bajos (_) y guiones (-). No se permiten espacios en blanco. Archivos que contengan nicamente cdigo php, deben terminar con la extensin.php.
Clases

Use nombres de clases cuyos nombres usen como prefijo el nombre la carpeta donde estn contenidas. Por ejemplo, si la clase "Bot" est contenida en una carpeta denominada "Mashups", entonces la clase debe llamarse "Mashups_Bot" y debe guardarse en la ruta "Mashups/Bot.php" Los nombres de clases slo pueden contener caracteres alfanumricos. Los nmeros estn permitidos en los nombres de las clases, pero no se recomiendan. El guin bajo (_) slo est permitido como separador de ruta (el archivo "Social/Mashups/Bot.php" contendra a la clase denominada "Social_Mashups_Bot"). Si el nombre de la clase se compone de varias palabras, la primer letra de cada palabra debe estar en mayscula.
Funciones y mtodos

Los nombres de las funciones slo pueden contener caracteres alfanumricos. No se permiten los guiones bajos (_) y no se recomiendan los nmeros. Los nombres de las funciones deben empezar con una letra minscula, pero cuando se

compone de varias palabras, de la segunda palabra en adelante deben iniciar con letra mayscula (camel case). Los nombres deben ser descriptivos de su propsito y comportamiento. En la OOP, los mtodos de acceso a las variables estticas o instancias, deben ser precedidos por las palabras "get" o "set". Al implementarse un patrn de diseo, como singleton o factory, el nombre del mtodo debe contener el nombre de dicho patrn para as describir su comportamiento de forma ms detallada. Cuando los mtodos son declarados con modificadores como "private" o "protected", el primer carcter del nombre de la variable debe ser un guin bajo (_), mientras que los mtodos declarados como pblicos no deben contener un guin bajo. Se recomienda poner las funciones con un alcance global en una clase esttica.

Variables

Los nombres de las variables deben contener caracteres alfanumricos. No se permiten las guiones bajos (_) y no se recomiendan los nmeros. Las variables de instancia que se declaran con los modificadores "private" o "protected", deben tener en el primer carcter un guin bajo (_), mientras que las variables declaradas como "public" no pueden iniciar con un guin bajo. Los nombres de las variables deben empezar con una letra minscula (camel case). Los nombres de variables deben ser descriptivos de los datos que el programador almacena en ellas. No se aconsejan nombres de variables como " $i " o " $n " excepto para el contexto de loops o ciclos pequeos (menores a unas 20 lneas de cdigo).
Constantes

Los nombres de las constantes pueden contener caracteres alfanumricos, guiones bajos (_) y nmeros. Todas las letras deben estar en mayscula. La separacin entre palabras debe hacerse usando el guin bajo (_). Las constantes deben ser definidas como miembros de una clase usando el modificador "const". No se recomienda definir constantes con alcance global (utilizando la funcin "define").

S-ar putea să vă placă și