이러한 메소드를 사용하는 클라이언트 코드를 손상시키지 않기 위해 API / 공용 메소드 서명의 변경이 최소화되어야한다는 점을 감안할 때 Demeter of Law 가 적용되지 않는지 궁금했습니다 .
간단한 예 :
class Account() {
double balance;
public void debit(Transaction t) {
balance -= t.getAmount();
}
}
debit 메소드는 단지 두 배의 금액이 아닌 Transaction 객체를 전달합니다. ( 'Law of Demeter')는 필요한 정보를 전달한다고 말합니다 (이 경우 Transaction 객체가 아닌 금액). ). 그 이유는 나중에 메소드에 금액 외에 다른 트랜잭션 속성이 필요할 수 있기 때문입니다. 내가 이해 한 바에 따르면, 앞으로 새 매개 변수를 추가하여 메서드 서명을 위반하지 못하게됩니다.
이것이 현명한 선택입니까? 아니면 뭔가 빠졌습니까?