Changes between Version 2 and Version 3 of EstandaresDesarrollo16


Ignore:
Timestamp:
Feb 17, 2016, 10:24:33 AM (8 years ago)
Author:
rboet
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • EstandaresDesarrollo16

    v2 v3  
    55=== Sobre los archivos ===
    66
    7 Los nombres de los archivos de cabecera deben terminar con la extensión ".H" mientras que los archivos de fuentes deben terminar con la extensión ".C".
     7Los archivos preferiblemente tendrán extensión ".Cpp" o en caso de considerarse necesario se utilizara ".C"
    88
    9 Si un par de archivos (cabecera y fuente) son contenedores de una clase, éstos deben tener el mismo nombre de la clase que contienen con la extensión respectiva en letras minúsculas.
    10 
    11 Por cada clase deben existir un par de archivos para su definición (archivo de cabecera) y su implementación (archivo fuente).
    12 
    13 Cada archivo que se cree debe comenzar con un bloque de comentario multilínea que contenga el texto de la licencia, por ejemplo:
     9Al inicio de cada archivo de recurso (.Cpp o .C) se debe incluir un comentario multilinea como el siguiente
    1410
    1511{{{
     
    1814  {{{#!C++
    1915  /*
    20      Texto de la licencia
     16     Creado bajo la licencia XXX
     17     Autor(es): XXXx y YYY
     18     Fecha: xx/xx/xxxx -> La Fecha Corresponde a cuando se creó el archivo
    2119  */
    2220  }}}
    2321}}}
    2422
    25 Luego se coloca otro bloque de comentario multilínea que contenga una breve descripción del archivo, autor o autores y la fecha de creación, por ejemplo:
    26 
    27 {{{
    28 #!div style="font-size: 80%"
    29 Code highlighting:
    30   {{{#!C++
    31   /*
    32      Este archivo contiene la implementación de ...
    33 
    34      Autor(es): José Ruiz, Julie Vera
    35 
    36      Fecha de Creación: 15/04/2015
    37   */
    38   }}}
    39 }}}
    4023
    4124=== Normas de Codificación ===
     
    4326'''Las Variables'''
    4427
    45 Asignarles nombres significativos a lo que almacenan y plantearlos como
    46 sustantivos.
    47 
    48 No todo el tiempo una variable tiene un nombre significativo por sí mismo, en
    49 esos casos agregar un comentario a la derecha de la declaración que explique
    50 brevemente su significado, si el comentario es multilínea, agregarlo antes de la
    51 declaración de la variable.
    52 
    53 Escribir el nombre de las variables comenzando con una letra minúscula. Cada palabra consecutiva en un nombre de variable debe comenzar con una letra mayúscula.
    54 
    55 Inicializarlas al momento de declararse y si se coloca una explicación a su lado.
    56 
    57 Usar una línea diferente para cada declaración.
     28El nombre de las variables debe ser significativo, y en caso contrario se debe especificar con un comentario de una sola linea que hace.
    5829
    5930Por ejemplo:
     
    6536  int age = 18;
    6637  int x = 0; // Componente x de un punto
    67   /*
    68     Componente y de un punto
    69     Ejemplo multilínea
    70   */
    7138  int y = 0;
    7239  }}}
    7340}}}
    7441
    75 '''Las Funciones'''
     42'''Las Funciones, Métodos y las Clases'''
    7643
    77 Asignarles nombres significativos a la operación que efectúen y plantearlos
    78 como verbos.
    79 
    80 Escribir un bloque de comentario multilínea que contenga una breve explicación
    81 de lo que hacen antes de su definición. Nota: Si es muy evidente la operación
    82 que ésta realice, se puede ignorar este paso.
    83 
    84 Escribir el nombre  comenzando con una letra minúscula. Cada palabra consecutiva en un nombre de función debe comenzar con una letra mayúscula.
    85 
    86 Para los parámetros de las funciones usar las mismas especificaciones de las
    87 variables.
     44Tanto las funciones, métodos así como las clases deben ser antecedidas por un comentario de multilinea donde se especifique que funcionalidad realizan, autor y fecha. En caso de ser necesario se realizaran comentarios de una línea para especificar algunos procedimientos dentro de la función, método o clase.
    8845
    8946Por ejemplo:
     
    9653    Efectúa la división de dos números reales (a / b), si b es igual a 0 arroja
    9754    excepción de error de dominio.
     55    Autor: José Ruiz
     56    Fecha: 20/02/2016
    9857  */
    9958  float divideFloat(const float & a, const float & b)
    10059  {
    10160    if (b == 0)
    102       throw std::domain_error("Division by 0");
     61      throw std::domain_error("Division by 0");//Arroja un error de división por cero
    10362
    10463    return a / b;
     
    10665  }}}
    10766}}}
    108 
    109 
    110 '''Clases'''
    111 
    112 Escribir mediante un comentario multilínea una breve explicación de los que
    113 representa la clase así como el autor o autores de ésta.
    114 
    115 Asignarles nombres significativos de lo que éstas representen y plantearlos como
    116 sustantivos.
    117 
    118 Escribir los nombres con el estilo de nombres propios, es decir, la primera
    119 letra de cada palabra que lo conforme en mayúscula y el resto en minúscula. Cada palabra consecutiva en un nombre de clase debe comenzar con una letra mayúscula.
    120 
    121 
    122 Ejemplo de definición de una clase:
    123 
    124 {{{
    125 #!div style="font-size: 80%"
    126 Code highlighting:
    127   {{{#!C++
    128   /* Clase que representa una lista mediante arreglos
    129 
    130      Autor: José Ruiz
    131    */
    132   class MainWindow : public QMainWindow
    133   {
    134 
    135   };
    136   }}}
    137 }}}
    138 
    139 A los atributos de una clase aplicarle las mismas especificaciones de una
    140 variable.
    141 
    142 A los metodos de una clase aplicarle las mismas especificaciones que a las
    143 funciones.
    144 
    145 '''''Consideraciones especiales sobre métodos'''''
    146 
    147 ''Constructores''
    148 
    149 Asignarle valor inicial a todos los atributos de la clase, usar el espacio de
    150 inicialización del constructor para el valor inicial y el espacio de
    151 implementación para cualquier operación adicional sobre los atributos.
    152 
    153 Siguiendo con el ejemplo de la clase definida anteriormente:
    154 
    155 {{{
    156 #!div style="font-size: 80%"
    157 Code highlighting:
    158   {{{#!C++
    159   /* Plantilla que representa una lista mediante arreglos
    160 
    161      Recibe como parámetro plantilla el tipo de elemento que va a almacenar.
    162 
    163      Autor: José Ruiz
    164    */
    165   class MainWindow : public QMainWindow
    166   {
    167     size_t size;  // Almacena el tamaño del arreglo
    168     T *    array; // Arreglo de elementos de tipo T
    169 
    170   public:
    171     MainWindow(const size_t & _size)
    172       : size(_size), array(nullptr)
    173     {
    174       array = new T[size];
    175     }
    176   };
    177   }}}
    178 }}}
    179 
    180 ''Modificadores y Observadores''
    181 
    182 A los observadores colocarles como nombre el mismo nombre del atributo al cual
    183 observa con el prefijo 'get'.
    184 
    185 A los modificadores colocarles como nombre el mismo nombre del atributo al cual
    186 observa con el prefijo 'set'.
    187 
    188 Por ejemplo para consultar el tamaño de la lista:
    189 
    190 {{{
    191 #!div style="font-size: 80%"
    192 Code highlighting:
    193   {{{#!C++
    194   /* Clase que representa una lista mediante arreglos
    195 
    196      Autor: José Ruiz
    197    */
    198   class MainWindow : public QMainWindow
    199   {
    200 
    201     // ... Otras implementaciones ...
    202 
    203     const size_t & getSize() const
    204     {
    205       return size;
    206     }
    207   };
    208   }}}
    209 }}}