Dado que as alterações na assinatura da API / método público devem ser mínimas para evitar a quebra dos códigos dos clientes que usam esses métodos, fiquei pensando se a Lei de Demeter é menos aplicável a eles.
Um exemplo simples:
class Account() {
double balance;
public void debit(Transaction t) {
balance -= t.getAmount();
}
}
Observe que o método de débito passa o objeto Transaction em vez de apenas o dobro da quantia (a 'Lei de Demeter', como eu o entendo, diria apenas passar as informações necessárias, neste caso, apenas a quantia, não o objeto Transaction ... ) A razão por trás disso é que o método no futuro pode exigir outras propriedades de Transação além do valor. Pelo que entendi, isso impedirá a quebra da assinatura do método adicionando um novo parâmetro no futuro.
Isso faz com que seja uma escolha sensata, então? Ou eu estou esquecendo de alguma coisa?