Naming Conventions para Proyectos JavaScript
Este documento establece convenciones de nombres para proyectos JavaScript. Siguiendo estos lineamientos, se busca mejorar la consistencia, colaboración y mantenibilidad del código.
Índice
Section titled “Índice”- Variables
- Booleans
- Functions
- Constantes
- Clases y Componentes
- Métodos
- Funciones Privadas
- Variables Globales
- Nombres de Archivos
- Resumen de Formatos
Variables
Section titled “Variables”- Formato:
camelCase - Descripción: Las variables deben ser descriptivas y específicas para el propósito que cumplen.
// goodlet userName = 'Juan';const productCount = 5;
// badlet usr_name = 'Juan';const pCount = 5;Aplicación:
Section titled “Aplicación:”- Frontend: se usa
camelCaseen variables de estado y para manejar datos. - Backend: es útil para nombres en controladores, servicios y modelos de datos.
Booleans
Section titled “Booleans”- Formato:
camelCasecon prefijosis,areohas. - Descripción: Los nombres booleanos deben ser claros, indicando una condición o estado.
// goodlet isAvailable = true;const hasPermission = false;let areItemsSelected = true;
// badlet available = true;const permission = false;let selectedItems = true;Aplicación:
Section titled “Aplicación:”- Frontend: el uso de prefijos facilita la comprensión en lógica condicional.
- Backend: útil para variables que manejan permisos y estados de autenticación.
Functions
Section titled “Functions”- Formato:
camelCase - Descripción: Los nombres de funciones deben expresar claramente la acción que realizan.
// goodfunction fetchUserData() { // code}
const calculateTotal = (items) => { // code}
// badfunction get() { // code}
const calc = (i) => { // code}Aplicación:
Section titled “Aplicación:”- Frontend: para manejar eventos y funciones auxiliares.
- Backend: se utiliza en servicios y controladores para acciones específicas.
Constantes
Section titled “Constantes”- Formato:
UPPER_CASE_SNAKE - Descripción: Las constantes deben estar en mayúsculas y separadas por guiones bajos.
// goodconst API_URL = 'https://api.example.com';const MAX_RETRY_COUNT = 3;const FULL_NAME = { firstName: "Juan", lastName: "Carlo"}
// badconst ApiUrl = 'https://api.example.com';const maxRetryCount = 3;const FullName = { firstName: "Juan", lastName: "Carlo"}Aplicación:
Section titled “Aplicación:”- Frontend: para configurar URLs, claves o valores constantes.
- Backend: útiles para constantes globales o valores de configuración.
Clases y Componentes
Section titled “Clases y Componentes”- Formato:
PascalCase - Descripción: Usa nombres específicos que representen el propósito de la clase o componente.
// goodclass UserController { // code}
function ProductList() { // code}
// badclass usercontroller { // code}
function product_list() { // code}Aplicación:
Section titled “Aplicación:”- Frontend: se usa PascalCase para componentes.
- Backend: se usa en clases de controladores, servicios y modelos de datos.
Métodos
Section titled “Métodos”- Formato:
camelCase - Descripción: Utiliza verbos que describan la acción específica de cada método.
class User { // good getName() { // code }
updateProfile(data) { // code }
// bad Name() { // code }
updProf(d) { // code }}Aplicación:
Section titled “Aplicación:”- Frontend: útil para métodos de manejo de estado y eventos.
- Backend: usado en métodos dentro de clases de servicio y controladores.
Funciones Privadas
Section titled “Funciones Privadas”- Formato:
_camelCase - Descripción: Prefija con
_para indicar que es una función interna.
class User { // good _validateEmail(email) { // código }
// bad validateEmail(email) { // código }}Aplicación:
Section titled “Aplicación:”- Frontend: para identificar funciones internas en lógica de componentes.
- Backend: en servicios y modelos para distinguir métodos internos.
Variables Globales
Section titled “Variables Globales”- Formato:
UPPER_CASE_SNAKE - Descripción: Idealmente, evita el uso de variables globales.
// goodconst GLOBAL_THEME_COLOR = '#333333';
// badconst globalThemeColor = '#333333';Aplicación:
Section titled “Aplicación:”- Frontend: se debe evitar, usando mejor contexto o almacenamiento local.
- Backend: usa servicios en lugar de variables globales.
Nombres de Archivos
Section titled “Nombres de Archivos”- Formato:
kebab-casepara módulos y PascalCase para componentes o clases. - Descripción: Usa nombres claros que describan el contenido o propósito del archivo.
// gooduser-service.jsproduct-list.jsUserProfile.js
// baduserService.jsProductlist.jsproduct_list.jsAplicación:
Section titled “Aplicación:”- Frontend: usa
PascalCasepara componentes ykebab-casepara utilidades. - Backend: usa
kebab-casepara archivos de servicios y controladores.
Resumen de Formatos
Section titled “Resumen de Formatos”| Tipo | Formato | Ejemplo |
|---|---|---|
| Variables | camelCase | userName |
| Booleans | camelCase (con prefijos is, are, has) | isAvailable |
| Funciones | camelCase | fetchData |
| Constantes | UPPER_CASE_SNAKE | API_KEY |
| Clases y Componentes | PascalCase | User |
| Métodos | camelCase | calculateTotal |
| Funciones Privadas | _camelCase | _fetchData |
| Variables Globales | UPPER_CASE_SNAKE | GLOBAL_CONFIG |
| Nombres de Archivos | kebab-case o PascalCase | user-profile.js o UserProfile.js |
Notas Adicionales:
Section titled “Notas Adicionales:”- Consistencia: Mantén estas convenciones en el proyecto para facilitar la colaboración.
- Nombres Descriptivos: Usa nombres claros y evita abreviaciones.
- Modularización: Usa contexto y dependencias inyectadas en lugar de variables globales.