Після років кодування ковбоя я вирішив забрати книгу про те, як написати код хорошої якості. Я читаю чистий код Роберта Сесіля Мартіна. У главі 3 (функції) є розділ про діадичні функції. Ось уривок із книги.
Навіть очевидні діадичні функції на кшталт
assertEquals(expected, actual)є проблематичними. Скільки разів ви ставили фактичне там, де має бути очікуване? Два аргументи не мають природного впорядкування. Очікуване, фактичне впорядкування - це умова, яка вимагає вивчити практику.
Автор робить переконливий момент. Я працюю в машинному навчанні і постійно стикаюся з цим. Наприклад, всі метричні функції в бібліотеці sklearn (можливо, найпоширеніша бібліотека пітонів у цій галузі) вимагають бути уважними щодо порядку введення даних. Як приклад sklearn.metrics.homogeneity_score бере в якості входів labels_trueі labels_pred. Те, що ця функція виконує, не надто актуальне, а релевантне - якщо ви переключите порядок входів, помилка не буде видана. Фактично перемикання входів рівнозначно використанню іншої функції в бібліотеці.
Однак у книзі не йдеться про розумне виправлення таких функцій, як assertEquals. Я не можу придумати виправлення для assertEqualsабо функцій, на які я часто стикаюся, як описане вище. Які хороші практики вирішити це питання?