我知道通过removeContract和removeIssuer的语义,以及代码的设计(getPrice是本地包,所以我是调用它的人),方法getPrice不能用合同的合同或发行者来调用之前被删除了。从某种意义上说,getPrice具有合同在HashMap" contract"中的前提条件。
然而,依靠这些假设而不检查是不好的做法?我应该添加checkArgument(contracts.contains(contract))
和checkArgument(issuers.contains(issuer))
吗?
PS:合同和发行人都是不可变的类。
public class Market {
private HashMap<Integer, Contract> contracts;
private HashMap<Integer, Issuer> issuers;
// ...
public Contract removeContract(Contract contract) { // ... }
public Issuer removeIssuer(Issuer issuer) { // ... }
double getPrice(Contract contract) {
checkArgument(contract != null, "Contract cannot be null");
Issuer issuer = issuers.get(contract.getIssuerId());
return issuer.getPriceDistribution().sample();
}
// ...
}