¡¡¡Sea imperativo!!!
TL;DR: Las funciones con nombres poco claros ocultan la intención y confunden a los lectores. Utilice nombres descriptivos y orientados a la acción.
Problemas
- Propósito de la función poco claro
- Aumento de la carga cognitiva
- Contexto engañoso
- Legibilidad reducida
- Colaboración difícil
- Funcionalidad oculta
Soluciones
- Utilice verbos orientados a la acción
- Haz que los nombres sean descriptivos
- Reflejar el propósito de la función
- Evite términos genéricos
- Proporcionar un contexto significativo
- Expresar claramente la responsabilidad única
- Hacer coincidir la acción con el resultado
Refactorizaciones
https://hackernoon.com/improving-the-code-one-line-at-a-time
Contexto
Las funciones nombradas con términos genéricos obligan a los lectores a sumergirse en la implementación para comprender su comportamiento.
Esto desperdicia tiempo y aumenta las posibilidades de errores.
La denominación se vuelve aún más crítica cuando se trabaja con funciones independientes, donde el nombre de la clase no proporciona contexto adicional.
Esta cuestión está directamente relacionada con el principio de “cuéntalo, no preguntes” .
En lugar de exponer comportamientos ambiguos que obligan al llamador a inferir la funcionalidad, los nombres imperativos transmiten la acción exacta, guiando al lector sin necesidad de inspeccionar el código.
Al nombrar funciones de manera descriptiva, eliminas conjeturas innecesarias y te alineas con este principio.
Código de muestra
Equivocado
public String dateFormatting(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void load() { System.out.println("Loading..."); }
Bien
public String formatDate(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void loadUserPreferences() { System.out.println("Loading user preferences..."); }
Detección
- [x] Manual
Puedes detectar este olor revisando los nombres de funciones que utilizan términos vagos como do , run , process , load , etc.
Los linters automatizados pueden marcar estos patrones o resaltar funciones con nombres demasiado genéricos.
Etiquetas
- Nombramiento
Nivel
- [x] Principiante
¿Por qué es importante la biyección?
Los nombres de las funciones deben crear una correspondencia clara uno a uno entre su nombre y su funcionalidad.
Romper esta biyección obliga a los desarrolladores a examinar los detalles del código para buscar contexto, lo que ralentiza la depuración, las revisiones y las extensiones.
Generación de IA
Las herramientas de IA a veces generan nombres de funciones genéricos sin comprender su dominio.
Al utilizar IA, especifique que los nombres de las funciones deben ser descriptivos y orientados a la acción.
Detección de IA
Los modelos de IA pueden ayudar a detectar nombres ambiguos comparando las firmas de funciones con las mejores prácticas de nombres predefinidas.
La combinación de IA con la revisión manual del código produce los mejores resultados.
¡Pruébalos!
Recuerde: los asistentes de IA cometen muchos errores
Sin instrucciones adecuadas | Con instrucciones específicas |
---|---|
Conclusión
Los nombres de funciones no son sólo etiquetas; son contratos con el lector.
Los nombres ambiguos rompen este contrato y generan confusión.
Los nombres descriptivos y orientados a la acción simplifican la comunicación y hacen que su código sea más fácil de mantener y ampliar.
Relaciones
Véase también
Descargo de responsabilidad
Los olores del código son mi opinión .
Créditos
Foto de britishlibrary en Unsplash
El nombre de una función debe ser un verbo o una frase verbal y debe tener significado.
Robert C. Martín
Este artículo es parte de la serie CodeSmell.