Java:不检查方法调用中的不可能状态

时间:2016-06-10 11:09:56

标签: java error-handling

我知道通过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();
  }

  // ...
}

0 个答案:

没有答案