Child pages
  • Estándares de desarrollo

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. if, elseif, while, for: deben presentar un espacio entre la palabra clave if y el paréntesis
    Code Block
    borderStylesolid
    if (<condition>)
    while (<condition>)
    
  2. Cuando una combinación de if y else else son usadas es utilizada y si ambas deben ofrecer un valor, el else debe ser evitado.
    Code Block
    borderStylesolid
    if (<condition>)
    	return false;
    return true;
    
    Note
    titleRecomendación

    Le recomendamos un resultado por método / función

  3. Cuando un método / función dan ofrece un valor booleano y el valor actual del método / función depende de ello, la declaración if debe ser evitada
    Code Block
    borderStylesolid
    public aFirstMethod()
    {
    	return $this->aSecondMethod();
    }
    
  4. Las pruebas deben ser agrupadas por "entidad"
    Code Block
    borderStylesolid
    if ($price AND !empty($price))
    	[...]
    if (!Validate::$myObject OR $myObject->id === NULL)
    	[...]
    

...

  1. Los nombres del método y la función comienzan siempre con un carácter en minúscula y cada una de las palabras siguientes debe deben comenzar con un carácter en mayúsculas (CamelCase)
    Code Block
    borderStylesolid
    public function myExempleMethodWithALotOfWordsInItsName()
    
  2. Los corchetes que se presentan el código de método tiene que ser precedidos por un retorno
    Code Block
    borderStylesolid
    public function myMethod($arg1, $arg2)
    {
    	[...]
    }
    
  3. Los nombres de los métodos y las funciones deben ser nombres explícitos, por lo tanto nombres de función como "b()" o "ef()" están completamente prohibidos.
    Info
    titleExceptions

    The only exceptions are the translation function called "l()" and debug functions "p()", "d()".

Enumeración

Las comas debe deben estar seguidas (y sólo seguidas) por un espacio.

...

  1. Los nombres de las definiciones deben ser escritos en mayúsculas
  2. Los nombres de las definiciones deber deben contar con el prefijo "PS_" dentro del núcleo y el módulo
    Code Block
    borderStylesolid
    define('PS_DEBUG', 1);
    define('PS_MODULE_NAME_DEBUG', 1);
    
  3. Los nombres de las definiciones no permiten caracteres alfabéticos. Excepto “_”.

...

  1. Dentro de las funciones y métodos, sólo la etiqueta "//" de comentario es permitida
  2. Después de la etiqueta "//" de comentario, un espacio “// Comment“ es necesario
    Code Block
    borderStylesolid
    // My great comment
    
  3. La etiqueta "//" de comentario es permitida al final de una línea de código
    Code Block
    $a = 17 + 23; // A comment inside my exemple function
    
  4. Funciones y métodos externos, sólo las etiquetas "/" y "/" de comentario son permitidas
    Code Block
    borderStylesolid
    /* This method is required for compatibility issues */
    public function foo()
    {
    // Some code explanation right here
    [...]
    }
    
  5. Comentario PHP Doc Element es necesario antes de las declaraciones de método
    Code Block
    borderStylesolid
    /**
     * Return field value if possible (both classical and multilingual fields)
     *
     * Case 1 : Return value if present in $_POST / $_GET
     * Case 2 : Return object value
     *
     * @param object $obj Object
     * @param string $key Field name
     * @param integer $id_lang Language id (optional)
     * @return string
     */
    protected function getFieldValue($obj, $key, $id_lang = NULL)
    
    Info
    titlePara más información

    Para más información acerca de la norma regla PHP Doc: vea este enlace útil

...

  1. La palabra clave de la matriz no debe ser seguido seguida por un espacio
    Code Block
    borderStylesolid
    array(17, 23, 42);
    
  2. La indentación debe ser de la siguiente forma cuando muchos datos se encuentran dentro de una matriz:
    Code Block
    borderStylesolid
    $a = array(
    	36 => $b,
    	$c => 'foo',
    	$d => array(17, 23, 42),
    	$e => array(
    		0 => 'zero',
    		1 => $one
    	)
    );
    

...

  1. Líneas de código fuente son limitadas a 120 caracteres
  2. Líneas de funciones y métodos están limitados limitadas a 80 con buenas justificaciones.

...

  1. Está prohibido el uso de un ternario en otro ternario
  2. Recomendamos utilizar && y || en sus condiciones
  3. Por favor, no use los parámetros de referencia

SQL

Nombres de

...

tablas

  1. Los nombres de cuadros tablas deben comenzar con el prefijo de PrestaShop "DB_PREFIX"
    Code Block
    borderStylesolid
    [...] FROM `'. _DB_PREFIX_.'customer` [...]
    
  2. Los nombres de cuadros tablas deben tener el mismo nombre que el objeto que reflejan
    por ejemplo "ps_cart"
  3. Los nombres de tablas deben permanecer en singular
    por ejemplo "ps_order"
  4. Información de idioma debe ser almacenada en un cuadro denominado una tabla denominada exactamente como uno de los objetos y con el sufijo "_lang" ej. "ps_product_lang"

...

  1. Las palabras clave deben ser escritas en mayúsculas.
    Code Block
    borderStylesolid
    SELECT `firstname`
    FROM `'. _DB_PREFIX_.'customer`
    
  2. Las Comillas ("`") deben ser utilizadas alrededor de nombres de campo y cuadro tabla
    Code Block
    borderStylesolid
    SELECT p.`foo`, c.`bar`
    FROM `'. _DB_PREFIX_.'product` p, `'. _DB_PREFIX_.'customer` c
    
  3. Los alias de cuadros tablas deben ser realizados utilizando la primera letra de cada palabra y deben estar en minúsculas
    Code Block
    borderStylesolid
    SELECT p.`id_product`, pl.`name`
    FROM `'. _DB_PREFIX_.'product` p
    NATURAL JOIN `'. _DB_PREFIX_.'product_lang` pl
    
  4. Cuando ocurran conflictos entre los alias de cuadrostablas, el segundo carácter también debe ser tomado.
    Code Block
    borderStylesolid
    SELECT ca.`id_product`, cu.`firstname`
    FROM `'.DB_PREFIX.'cart` ca, `'. _DB_PREFIX_.'customer` cu
    
  5. La indentación se debe realizar para cada cláusula
    Code Block
    borderStylesolid
    $query = 'SELECT pl.`name`
    FROM `'.PS_DBP.'product_lang` pl
    WHERE pl.`id_product` = 17';
    
  6. Está prohibido realizar una combinación en la cláusula WHERE

...

Este es un breve tutorial sobre cómo instalar un validador de código en su PC y utilizarlo para validar sus archivos. El validador de código utiliza PHP CodeSniffer, el cual es un paquete de PEAR. El código estándar de PrestaShop fue creado específicamente para CodeSniffer y utiliza muchas reglas tomadas de las normas reglas existentes, agregándole reglas personalizadas con el fin de adaptarse mejor a nuestro proyecto.

Puede acceder a la norma regla del código PrestaShop utilizando SVN: http://dev.prestashop.com/svn/v1/branches/norm (debe realizar este paso antes de continuar con este tutorial)

...

  1. Instalar PEAR: http://pear.php.net/
  2. Instalar PHP CodeSniffer en PEAR: http://pear.php.net/package/PHP_CodeSniffer
  3. Añadir la norma regla PrestaShop que ha descargado desde SVN antes, y colocarla en la carpeta "Standards" de PHP CodeSniffer.

...