Nach Jahren der Cowboy-Codierung entschied ich mich, ein Buch darüber zu lesen, wie man Code von guter Qualität schreibt. Ich lese Clean Code von Robert Cecil Martin. In Kapitel 3 (Funktionen) gibt es einen Abschnitt über dyadische Funktionen. Hier ist ein Auszug aus dem Buch.
Selbst offensichtliche dyadische Funktionen wie
assertEquals(expected, actual)
sind problematisch. Wie oft haben Sie den tatsächlichen Wert dort angegeben, wo er erwartet werden sollte? Die beiden Argumente haben keine natürliche Reihenfolge. Die erwartete tatsächliche Bestellung ist eine Konvention, die Übung erfordert, um zu lernen.
Der Autor macht einen überzeugenden Punkt. Ich arbeite im maschinellen Lernen und stoße die ganze Zeit darauf. Beispielsweise müssen Sie bei allen Metrikfunktionen in der sklearn-Bibliothek (wahrscheinlich der am häufigsten verwendeten Python-Bibliothek im Feld) auf die Reihenfolge der Eingaben achten. Als Beispiel nimmt sklearn.metrics.homogeneity_score als Eingaben labels_true
und labels_pred
. Was diese Funktion nicht allzu relevant macht, ist relevant, dass beim Umschalten der Reihenfolge der Eingänge kein Fehler ausgegeben wird. Tatsächlich entspricht das Umschalten der Eingänge der Verwendung einer anderen Funktion in der Bibliothek.
Das Buch sagt jedoch keine sinnvolle Lösung für Funktionen wie assertEquals
. Ich kann mir keine Lösung für assertEquals
oder für Funktionen vorstellen, auf die ich oft stoße, wie die oben beschriebene. Was sind bewährte Verfahren zur Lösung dieses Problems?