Las convenciones de nombres son reglas para nombrar los componentes de un proyecto, tales como carpetas, archivos, estructuras, variables, entre otros. Estas reglas pueden seguir diferentes notaciones para cada componente.
Las notaciones hacen referencia a la manera de nombrar los conjuntos de componentes, como los identificadores de variables, tipos, funciones, en el código fuente. Todo el conjunto de componentes debe seguir una única notación:
En C++
se suele limitar estos identificadores a:
- Las letras del abecedario en inglés (aA - zZ ASCII)
- Números (0-9)
- Guion bajo
_
Las distintas combinaciones forman las siguientes notaciones:
Notación | Ejemplo |
---|---|
Upper | NOTACIONMAYUSCULAS |
Lower | notacionminusculas |
Pascal | NotacionPascal |
Camel | notacionCamel |
Snake | notacion_snake |
Kebab | notacion-kebab |
Screaming/upper snake | SCREAMING_SNAKE |
Screaming/upper kebab | UPPER-KEBAB |
A partir de las notaciones se definen convenciones para su uso.
NOTA: Las notaciones kebab en C++ solo se pueden usar en los nombres de archivos y directorios, no dentro del código fuente.
Notaciones reservadas
Los identificadores de la biblioteca estándar de C
suelen estar en minúscula y
sin separadores; así son los tipos de datos, y algunas funcionalidades y
algoritmos:
std::vector
std::begin
std::end
std::replace
std::setlocale
std::cout
std::isupper
std::islower
std::isdigit
std::ispunct
std::isspace
Para C++ sí es posible encontrar identificadores en snake_case y PascalCase:
InputIterator
std::unordered_map
std::out_of_range
std::basic_string
Las variables que usan doble guion bajo también suelen ser reservadas. Las estructuras de usuario no deben usar como identificadores nombres que comiencen o terminen con doble guion bajo, pues pueden causar colisiones con las reservadas.
Descripción de las notaciones
-
PascalCase: Consiste en que todas las palabras que forman el nombre tienen su primera letra en mayúscula y las demás en minúscula:
IdentificadorConMultiplesPalabras
-
camelCase: Consiste en que todas las palabras que forman el nombre tienen su primera letra en mayúscula y las demás en minúscula, excepto la primera palabra:
identificadorConMultiplesPalabras
-
snake_case: Todas las palabras que forman el nombre están en minúsculas, y separadas por un guion bajo:
identificador_con_multiples_palabras
-
SCREAMING_SNAKE_CASE: Similar al snake_case, todas las palabras están separadas por un guion bajo, pero en mayúscula sostenida. También se conoce como UPPER_SNAKE_CASE:
IDENTIFICADOR_CON_MULTIPLES_PALABRAS
-
kebab-case: Como con snake, puede estar en minúsculas o mayúsculas sostenidas (
SCREAMING-KEBAB-CASE
), y las palabras se separan por un guion medio:identificador-con-multiples-palabras
Acuerdos del uso de convenciones
La decisión de usar una convención suele acordarse para un proyecto o equipo. Lo
más importante al elegir una es que sea consistente a través de todo el código
del proyecto, independientemente de las notaciones elegidas a usar. Es por eso
que en algunos proyectos se siguen apreciando notaciones como la Húngara.
Por ejemplo, es posible tomar la decisión de que el proyecto HolaMundo debe
seguir las siguientes:
- Los nombres de estructuras (clases) usan la notación
PascalCase
. - Las funciones (miembro o libres) usan
camelCase
. - Los nombres de variables usan
snake_case
. - Las constantes usan
UPPER_SNAKE_CASE
. - Los directorios usan
PascalCase
.
También es recomendable no mezclar notaciones; por ejemplo, está desestimado
combinar Pascal con snake, formando Notacion_Pascal_Snake
.
Fuentes
- wiki:Convenciones de nombres
- Better programming: String case styles
- Neoguías: Tipos de notaciones de nombres
- Kyocode: Notación pascal y camel
Deja un comentario