Trabajar con valores monetarios en código
Eventualmente, todo programador debe manejar cantidades monetarias en su código. Esto suele ser complicado y es absolutamente necesario que se haga correctamente.
Mis consejos en este tema son:
No reinventes lo que ya existe #
Existen librerías (como dinero para Python) que han sido creadas específicamente para trabajar con cantidades monetarias y todos sus casos borde. Usualmente están probadas para considerar muchos escenarios específicos que quizás no hayas considerado. ¡Altamente recomendadas!
Usa el tipo de dato correcto #
La selección del tipo de datos correcto es clave para almacenar y transportar cantidades monetarias. Evita números de punto flotante, ya que pueden introducir errores de redondeo al hacer cualquier operación entre cantidades francionarias.
Considera usar números de punto fijo (como Decimal
en Python) o enteros (por ejemplo, trata el dinero como centavos en vez de dólares, como lo hace Stripe). Esto ayudará a evitar errores de redondeo por diseño.
Siempre considera la localización #
Dependiendo del país o región, se usan diferentes maneras de formatear cantidades monetarias. Por ejemplo, tres dólares y cincuenta centavos se escribiría $3.50
en Canadá, pero $3,50
en Francia (usando coma en vez de punto).
Esto es especialmente importante si estás trabajando en código que enviará o recibirá valores monetarios a otro sistema, o que interpretará una entrada del usuario como valores monetarios (por ejemplo, una cadena de caracteres). Asegúrate de establecer y respetar un contrato claro entre ambos sistemas o con la entrada del usuario sobre el formato de los valores monetarios. Considera cómo se comportará tu código si es desplgado en otra región o país, y si la configuración regional del sistema cambiar en tiempo de ejecución.
¡Lleva registro de todo! #
O, por lo menos, de lo más importante hasta donde puedas hacerlo. De esta forma, puedes reconstruir cualquier operación de ser necesario y comprender qué salió mal (cuando salgan mal).
Prueba todo, ¡todo! #
Por último, asegúrate de probar todo a fondo. Agrega pruebas unitarias para todo el código que puedas probar, escribe pruebas de integración para los componentes que interactúen entre sí, y realiza pruebas end-to-end periódicamente.
- Anterior: Otro paso como creador de proyectos de código abierto
- Siguiente: jueves cualquiera