paint-brush
Code Smell 285: Cómo solucionar problemas con funciones no imperativaspor@mcsee
277 lecturas

Code Smell 285: Cómo solucionar problemas con funciones no imperativas

por Maximiliano Contieri3m2025/01/11
Read on Terminal Reader

Demasiado Largo; Para Leer

Las funciones con nombres poco claros ocultan la intención y confunden a los lectores. Utilice nombres descriptivos y orientados a la acción.
featured image - Code Smell 285: Cómo solucionar problemas con funciones no imperativas
Maximiliano Contieri HackerNoon profile picture
0-item

¡¡¡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

  1. Utilice verbos orientados a la acción
  2. Haz que los nombres sean descriptivos
  3. Reflejar el propósito de la función
  4. Evite términos genéricos
  5. Proporcionar un contexto significativo
  6. Expresar claramente la responsabilidad única
  7. 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

ChatGPT

ChatGPT

Claudio

Claudio

Perplejidad

Perplejidad

Copiloto

Copiloto

Géminis

Géminis

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.