Враховуючи, що зміни в підписі API / public методу повинні бути мінімальними, щоб запобігти порушенню тих клієнтських кодів, які використовують ці методи, мені було цікаво, чи Закон Деметер менш застосовний до них.
Простий приклад:
class Account() {
double balance;
public void debit(Transaction t) {
balance -= t.getAmount();
}
}
Зауважте, що дебетовий метод передає об'єкт транзакції, а не просто подвійну суму («Закон Деметера», наскільки я розумію, сказав би просто передати необхідну інформацію, в даному випадку - лише суму, а не об’єкт транзакції ... ). Причина цього полягає в тому, що метод в майбутньому може зажадати від суми інших властивостей транзакцій. Як я розумію, це не дозволить порушити підпис методу, додавши новий параметр у майбутньому.
Чи робить це тоді розумним вибором? Або я щось пропускаю?