Después de años de codificación de vaqueros, decidí recoger un libro sobre cómo escribir un código de buena calidad. Estoy leyendo Clean Code de Robert Cecil Martin. En el capítulo 3 (funciones) hay una sección sobre funciones diádicas. Aquí hay un extracto del libro.
Incluso funciones diádicas obvias como
assertEquals(expected, actual)
son problemáticas. ¿Cuántas veces has puesto el real donde debería estar lo esperado? Los dos argumentos no tienen un orden natural. El pedido real esperado es una convención que requiere práctica para aprender.
El autor hace un punto convincente. Trabajo en aprendizaje automático y me encuentro con esto todo el tiempo. Por ejemplo, todas las funciones métricas en la biblioteca sklearn (probablemente la biblioteca python más utilizada en el campo) requieren que tenga cuidado con el orden de las entradas. Como ejemplo, sklearn.metrics.homogeneity_score toma como entradas labels_true
y labels_pred
. Lo que hace esta función no es demasiado relevante, lo que es relevante es que si cambia el orden de las entradas no se generará ningún error. De hecho, cambiar las entradas es equivalente a usar otra función en la biblioteca.
Sin embargo, el libro no dice una solución sensata para funciones como assertEquals
. No puedo pensar en una solución para assertEquals
o para las funciones que a menudo encuentro como la descrita anteriormente. ¿Cuáles son las buenas prácticas para resolver este problema?