長年にわたるカウボーイコーディングの後、私は良質のコードを書く方法についての本を手に入れることにしました。私はRobert Cecil MartinのClean Codeを読んでいます。第3章(関数)には、2項関数に関するセクションがあります。これは本からの抜粋です。
のような明白な二項関数でさえ
assertEquals(expected, actual)
問題があります。予想されるはずの場所に実際の回数を何回入れましたか?2つの引数には自然な順序はありません。予想される実際の順序は、慣れるために習得する必要がある規則です。
著者は説得力のあるポイントを作成します。私は機械学習で働いており、これにいつも出会います。たとえば、sklearnライブラリのすべてのメトリック関数(おそらくフィールドで最も使用されているpythonライブラリ)では、入力の順序に注意する必要があります。例として、sklearn.metrics.homogeneity_scoreは入力labels_true
およびとして使用されlabels_pred
ます。この関数の機能はあまり重要ではありません。重要なのは、入力の順序を切り替えてもエラーがスローされないことです。実際、入力を切り替えることは、ライブラリ内の別の関数を使用することと同じです。
ただし、この本では、のような関数の賢明な修正については触れていませんassertEquals
。assertEquals
上記のような頻繁に遭遇する機能の修正については考えられません。この問題を解決するための良い方法は何ですか?