Dato che le modifiche all'API / firma del metodo pubblico dovrebbero essere minime per evitare di infrangere quei codici client che usano questi metodi, mi chiedevo se Law of Demeter è 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 supera l'oggetto Transaction anziché solo il doppio (la "Legge di Demeter", come ho capito, direbbe semplicemente di passare le informazioni richieste, in questo caso solo l'importo, non l'oggetto Transaction ...). La ragione di questo, è perché il metodo in futuro potrebbe richiedere alcune altre proprietà di transazione oltre all'importo. Da quanto ho capito, ciò impedirà di rompere la firma del metodo aggiungendo un nuovo parametro in futuro.
Questo rende quindi una scelta sensata? O mi sto perdendo qualcosa?