Dato che le modifiche alla firma dell'API / del metodo pubblico dovrebbero essere minime per evitare la violazione di quei codici client che utilizzano questi metodi, mi chiedevo se la Legge di Demetra fosse meno applicabile a questi.
Un semplice esempio:
class Account() {
double balance;
public void debit(Transaction t) {
balance -= t.getAmount();
}
}
Si noti che il metodo di addebito passa l'oggetto Transaction piuttosto che solo un doppio importo (la "Legge di Demeter", a quanto ho capito, direbbe semplicemente di passare le informazioni richieste, in questo caso solo l'importo, non l'oggetto Transaction ... ). Il motivo dietro questo, è perché il metodo in futuro potrebbe richiedere alcune altre proprietà Transazione oltre all'importo. Da quanto ho capito, questo impedirà di rompere la firma del metodo aggiungendo un nuovo parametro in futuro.
Questo lo rende quindi una scelta sensata? Oppure mi sfugge qualcosa?