Code smells: bits que huelen mal

código chipax
Volver al Blog »
código chipax

¿Qué son los code smells?

A todos nos ha pasado: abrimos el refrigerador y nos llega una oleada indeterminada de podredumbre. En ese momento nos ponemos en nuestro rol de sabueso, haciendo un assessment organoléptico producto por producto. Ah, es el bloque de queso que se convirtió en un zoológico fúngico otra vez. A la basura.

refrigerador

En el software pasa algo parecido. El código no tiene olor, pero puede apestar fácilmente. Existen pistas de que ciertos pedazos de código funcionan, pero no están bien diseñados. A esto se les suele llamar code smells. Y nunca son buenos smells.

Mientras uno va aprendiendo en el rol de ingeniero de software, uno deja de “tirar líneas de código” para empezar a diseñar código. Esto no solo es branding para buscar un aumento de sueldo. Significa ir formando una intuición de cosas que funcionan bien y cosas que no. Idealmente se llega al punto en el que revisando el código de alguien con menos experiencia se gatillan todas las alarmas al ver algo feo. La idea será hacer una reescritura del código antes de que se publique en producción.

¿Y cómo se ven?

Vienen en muchos sabores y colores. Pero algunos de los más típicos son:

  • Clase / Función muy larga: tal como suena. Hay una función que tiene 250 líneas y es doloroso entender qué hace. Probablemente calcula lo que le piden, pero además aprovecha de calcular tu devolución de impuestos, te hace un café y quizás qué más. ¿Cómo remediarlo? Aplicando el principio de Single responsibility: una función debe hacer una sola cosa. Si la función se llama calculatePriceAndMakeCoffeeAndDoYourTaxes probablemente tienes un problema.
confundido
  • Código duplicado: el mismo código (o uno sospechosamente similar) aparece en dos o más lugares del código. Es decir, si cambia un supuesto o requerimiento en el futuro (spoiler: it will), el código deberá cambiarse en todos esos lugares. Y si no se cambia en todos los lugares, las inconsistencias pueden brotar como malezas. ¿Cómo remediarlo? Ponerse el sombrero ecológico y reutilizar el código en todos los lugares que tenga sentido.
  • Generalización especulativa: esto ocurre cuando construimos muchas cosas que “se ocuparán a futuro”. Es decir, muchas cosas que no se ocupan ahora y que quizás tendremos que eliminar. Por supuesto que es importante mantener la flexibilidad para desarrollos futuros. Pero el tiempo del programador es valioso, por lo que debería dedicarlo a programar las cosas que definitivamente se ocuparán ahora. Lo peor es que —además del tiempo perdido— la complejidad del código probablemente aumente, y con esto la legibilidad se desplome. Ocurre cuando en vez de hacer un desarrollo iterativo, donde al producto se le van agregando funcionalidades de manera incremental y acotada,  nos lanzamos a crear cosas que quizás no necesitemos. ¿Cómo lo remediamos? Crear features cuando se necesitan. Convencerse de que flexibilidad no es igual a programar por si acaso.


Fuente: https://xp123.com/articles/speculative-generality/

¿Y por qué ocurren?

  • Porque a veces somos ignorantes.
  • Porque es más rápido hacer algo de una mala manera antes que reorganizar todo el código. 
  • Porque estamos desconcentrados.
  • Porque el feature era para ayer.
  • Porque la peer review se fijó en errores ortográficos y no en la estructura.

O simplemente porque no existe el código perfecto, y perseguirlo es carísimo (y lo opuesto a la agilidad que busca el buen software).

En conclusión

La distancia entre el (teórico) software perfecto y el actual se llama deuda técnica. Y, como cualquier tipo de deuda, puede permitirnos crecer rápidamente o arruinarnos por completo. Una de las responsabilidades del equipo de ingeniería es entender cuándo y dónde vale la pena dejar un poco de deuda técnica y en qué casos es inaceptable. Pero si entrenamos nuestra intuición o “nariz” para los code smells, nunca publicaremos un código subóptimo sin darnos cuenta: solo lo dejaremos pasar en situaciones muy particulares.

Y, en cuanto tengamos un minuto libre, podremos aplicarnos en mejorar un poco la base de código. Así vamos pagando la deuda, poco a poco, mientras nuevos desarrollos insertan nueva deuda.

Sobre el autor

Felipe Urzúa

Felipe Urzúa

¿Te gustó este artículo?

Compártelo con los tuyos y ayúdalos a mejorar las finanzas de sus negocios

No te pierdas los próximos artículos

artículos

Artículos que te pueden interesar:

sincronización

Automatizaciones

Flujo de caja, Cobranza, Pago de facturas y más.

planillas

Administración & Reportes

Estado de resultados, Plan de cuentas y presupuestos a la medida.

plantilla flujo de caja

Cóbrale gratis a tus clientes

Para negocios que están comenzando y quieren tener en orden sus cuentas por cobrar y pagar.

Historias de éxito

Chipax en la vida de los emprendedores

Flujo de caja, Cobranza, Pago de facturas y más.

Estado de resultado, Plan de cuentas y presupuestos a la medida.

Para negocios que están comenzando y quieren tener en orden sus cuentas por cobrar y pagar.

Conoce las historias de nuestros clientes

Los mejores articulos sobre finanzas, emprendimiento, recursos humanos y administración.

Aprende a usar Chipax fácil, rápido y gratis.

Consejos y respuestas del equipo de Chipax.

Partners

Nuestros aliados para llevar la administración y contabilidad con Chipax

Descuentos y beneficios para clientes.

Plantillas, Ebooks, Checklists y más herramientas gratuitas para tu negocio.

Finanzas de la A a la Z, simple con Chipax.

bsale

+

logo.chipax.150

¿Qué es Bsale?

Software online de ventas para ordenar tu negocio. Con él tienes boleta y factura electrónica, interfaz de punto de venta, control de inventario, reportes de venta y página web con carro de compra. Todo esto integrado en una sola plataforma!
Olvídate de las planillas de excel, de no tener claridad cuánta mercadería te queda, cuánto has vendido y qué margen tienes. Con Bsale tienes información a la mano que te ayuda a hacer crecer tu negocio.

¿Para qué conectar Bsale a Chipax?

  1. Para sincronizar el detalle de las boletas de venta
  2. Mantener la conciliación de las boletas al día, todos los días
  3. Para descargar archivos XML de facturas emitidas y recibidas para ver su detalle

Extra: ¿Ya eres cliente Chipax? Pregunta por tu descuento exclusivo en Bsale.

¡Bienvenido a chipax!

Te llamaremos muy pronto para confirmar detalles del plan y resolver cualquier duda que tengas.

¡Dame esos 5 👋!

Está todo listo, ya recibirás nuestros datos clave para lograr un orden Zen.