Dopo anni di codifica da cowboy, ho deciso di prendere un libro su come scrivere un codice di buona qualità. Sto leggendo Clean Code di Robert Cecil Martin. Nel capitolo 3 (funzioni) c'è una sezione sulle funzioni diadiche. Ecco un estratto dal libro.
Even obvious dyadic functions like
assertEquals(expected, actual)
are problematic. How many times have you put the actual where the expected should be? The two arguments have no natural ordering. The expected, actual ordering is a convention that requires practice to learn.
L'autore è un punto convincente. Lavoro nell'apprendimento automatico e mi imbatto continuamente in questo. Ad esempio, tutte le funzioni metriche nella libreria sklearn (probabilmente la libreria python più utilizzata nel campo) richiedono che si presti attenzione all'ordine degli input. Come esempio sklearn.metrics.homogeneity_score prende come input labels_true
e% codice%. Ciò che fa questa funzione non è troppo rilevante, ciò che è rilevante è che se si cambia l'ordine degli input non verrà generato alcun errore. In effetti, il passaggio degli input equivale a utilizzare un'altra funzione nella libreria.
Tuttavia il libro non continua a dire una correzione ragionevole per funzioni come labels_pred
. Non riesco a pensare a una correzione per assertEquals
o per le funzioni che mi capita spesso di incontrare come quella sopra descritta. Quali sono le buone pratiche per risolvere questo problema?