Após anos de codificação de cowboys, decidi pegar um livro sobre como escrever código de boa qualidade. Estou lendo o Código Limpo, de Robert Cecil Martin. No capítulo 3 (funções), há uma seção sobre funções diádicas. Aqui está um trecho do livro.
Mesmo funções diádicas óbvias como
assertEquals(expected, actual)
são problemáticas. Quantas vezes você colocou o real onde deveria estar o esperado? Os dois argumentos não têm ordem natural. A ordenação real esperada é uma convenção que requer prática para aprender.
O autor faz um argumento convincente. Eu trabalho em aprendizado de máquina e me deparei com isso o tempo todo. Por exemplo, todas as funções métricas na biblioteca sklearn (provavelmente a biblioteca python mais usada no campo) exigem que você tenha cuidado com a ordem das entradas. Como exemplo, sklearn.metrics.homogeneity_score assume como entradas labels_true
e labels_pred
. O que essa função faz não é muito relevante, o que é relevante é que, se você alternar a ordem das entradas, nenhum erro será gerado. De fato, alternar as entradas é equivalente a usar outra função na biblioteca.
No entanto, o livro não diz uma correção sensata para funções como assertEquals
. Não consigo pensar em uma correção para assertEquals
ou para funções que frequentemente encontro como a descrita acima. Quais são as boas práticas para resolver esse problema?