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