Angesichts der Tatsache, dass Änderungen an der API / öffentlichen Methodensignatur minimal sein sollten, um zu verhindern, dass die Clientcodes, die diese Methoden verwenden, beschädigt werden, habe ich mich gefragt, ob das Demeter-Gesetz auf diese weniger anwendbar ist.
Ein einfaches Beispiel:
class Account() {
double balance;
public void debit(Transaction t) {
balance -= t.getAmount();
}
}
Beachten Sie, dass die Abbuchungsmethode das Transaktionsobjekt und nicht nur den doppelten Betrag übergibt (das 'Gesetz von Demeter' würde, so wie ich es verstehe, nur die erforderlichen Informationen übergeben, in diesem Fall nur den Betrag, nicht das Transaktionsobjekt ... ). Der Grund dafür ist, dass die Methode in Zukunft möglicherweise neben dem Betrag noch einige andere Transaktionseigenschaften erfordert. Soweit ich weiß, wird dies verhindern, dass die Methodensignatur durch Hinzufügen eines neuen Parameters in Zukunft beschädigt wird.
Ist dies dann eine vernünftige Wahl? Oder fehlt mir etwas?