Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > perl > pbp > essential > Nombrando objetos: plantillas gramaticales

Nombrando objetos: plantillas gramaticales

Una de las prácticas más recomendadas a la hora de escribir código es la coherencia en la nomenclatura de objetos, tanto si se trata de variables como si se trata de código ó de objetos (que vienen a ser una mezcla de ambos).

Conway recomienda utilizar lo que he traducido por plantillas gramaticales y sugiere (en su estilo) lo siguiente.

Paquetes y clases

La plantilla es la siguiente:

Espacio de Nombres  ->      Nombre :: Adjetivo :: Adjetivo
                        |   Nombre :: Adjetivo
                        |   Nombre

De manera que una jerarquía de clases sobre discos podría quedar así:

    1 package Disk;
    2 package Disk::Audio;
    3 package Disk::DVD;
    4 package Disk::DVD::Rewritable;

Es decir, cuanto más se especializa la clase más adjetivos se le añaden al sustantivo común Disk, y su propósito es ayudar a recordar las relaciones existentes entre clases de un sólo vistazo.

Variables

Para las variables la plantilla es:

Variable    ->  [ adjetivo _ ]* nombre

Los nombres de las variables deberían ser asignados con relación a su contenido y siendo tan específicos como fuese posible. Es decir el nombre (y los adjetivos) deben elegirse en los términos del problema y no en los términos de la implementación.

Ahora bien, en español nombrar las variables tal y como propone puede resultar bastante chocante, puesto que los adjetivos suelen ir a continuación del nombre y no precediéndole.

Conway también indica que aquellas variables cuyo ámbito es de más de un bloque deberían tener nombres largos (que consisten en varios sustantivos separados por un subrayado), mientras que los cortos deberían usarse en variables con un tiempo de vida más limitado.

Algunos ejemplos de nombres de variables:

    1 my $next_client;         # no $next_item
    2 my $final_total;         # no $sum
    3 my $cumulative_total;    # no $partial_sum

Métodos y funciones

PENDIENTE DE COMPLETAR

Conmutadores y referencias

PENDIENTE DE COMPLETAR