Do các thay đổi đối với chữ ký API / phương thức công khai nên ở mức tối thiểu để ngăn chặn việc phá vỡ các mã máy khách sử dụng các phương thức này, tôi đã tự hỏi liệu Luật của Demeter có ít áp dụng cho các mã này không.
Một ví dụ đơn giản:
class Account() {
double balance;
public void debit(Transaction t) {
balance -= t.getAmount();
}
}
Lưu ý rằng phương thức ghi nợ vượt qua đối tượng Giao dịch thay vì chỉ gấp đôi số tiền ('Luật của Demeter', theo tôi hiểu, sẽ nói chỉ chuyển thông tin bắt buộc, trong trường hợp này chỉ là số tiền, không phải đối tượng Giao dịch ... ). Lý do đằng sau điều này là bởi vì phương thức trong tương lai có thể yêu cầu một số thuộc tính Giao dịch khác ngoài số tiền. Từ những gì tôi hiểu, điều này sẽ ngăn việc phá vỡ chữ ký phương thức bằng cách thêm một tham số mới trong tương lai.
Điều này làm cho nó một sự lựa chọn hợp lý sau đó? Hay tôi đang thiếu một cái gì đó?