Après des années de codage cowboy, j'ai décidé de prendre un livre sur la façon d'écrire du code de bonne qualité. Je lis Clean Code de Robert Cecil Martin. Dans le chapitre 3 (fonctions), il y a une section sur les fonctions dyadiques. Voici un extrait du livre.
Même les fonctions dyadiques évidentes comme celles-ci
assertEquals(expected, actual)
sont problématiques. Combien de fois avez-vous mis le réel là où le prévu devrait être? Les deux arguments n'ont pas d'ordre naturel. La commande réelle et attendue est une convention qui requiert de la pratique pour apprendre.
L'auteur fait valoir un argument convaincant. Je travaille dans le machine learning et je le rencontre tout le temps. Par exemple, toutes les fonctions métriques de la bibliothèque sklearn (probablement la bibliothèque python la plus utilisée dans le domaine) vous obligent à faire attention à l'ordre des entrées. Par exemple, sklearn.metrics.homogeneity_score prend comme entrées labels_true
et labels_pred
. Ce que fait cette fonction n'est pas trop pertinent, ce qui est pertinent, c'est que si vous changez l'ordre des entrées, aucune erreur ne sera générée. En fait, la commutation des entrées équivaut à utiliser une autre fonction dans la bibliothèque.
Cependant, le livre ne continue pas à dire une solution judicieuse pour des fonctions telles que assertEquals
. Je ne peux pas penser à un correctif pour assertEquals
ou pour des fonctions que je rencontre souvent comme celle décrite ci-dessus. Quelles sont les bonnes pratiques pour résoudre ce problème?