Dopo anni di programmazione 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.
Anche ovvie funzioni diadiche come
assertEquals(expected, actual)
sono problematiche. Quante volte hai messo l'attuale dove dovrebbe essere previsto? I due argomenti non hanno un ordinamento naturale. L'ordinamento atteso ed effettivo è una convenzione che richiede pratica per imparare.
L'autore fa un punto convincente. Lavoro nell'apprendimento automatico e mi imbatto sempre in questo. Ad esempio, tutte le funzioni metriche nella libreria sklearn (probabilmente la libreria python più utilizzata nel campo) richiedono di stare attenti all'ordine degli input. Ad esempio sklearn.metrics.homogeneity_score prende come input labels_true
e labels_pred
. Ciò che questa funzione non è troppo rilevante, ciò che è rilevante è che se si cambia l'ordine degli ingressi non verrà generato alcun errore. In effetti, la commutazione degli ingressi equivale all'utilizzo di un'altra funzione nella libreria.
Tuttavia, il libro non prosegue dicendo una soluzione ragionevole per funzioni come assertEquals
. Non riesco a pensare a una correzione per assertEquals
o per funzioni che mi capita spesso di trovare come descritto sopra. Quali sono le buone pratiche per risolvere questo problema?