在方法本身中整合外部条件时?

when integrating outer conditions in a method itself?

有这样的方法:

public double calculateCost();

我可以做下一个:

if(!personIsPartner) {
  double cost = calculateCost();
}

public double calculateCost(){
  if(!personIsPartner) {
    //calculateCost
  }else{
     return 0;     
  }
}

我的意思是,如果每当你调用一个方法时,你必须先评估相同的 condition/s,

谢谢

归根结底,这真的取决于开发人员的判断。对于您的方法来说,允许传递给它的内容并相应地处理错误、特殊情况等通常是一件好事。

这里确实有几件事需要考虑;您将多久使用一次此方法,以及是否始终在调用之前进行该检查。如果您经常使用它并且总是进行检查,那么我会放入方法中,如果您有一种或多种情况需要 calculateCost() 的结果,它将是非零和 personIsPartner == true 那么你就不能合理地将条件移动到方法中(或者至少需要进一步更改以适应那些特殊情况)。

根据您提供的详细信息,我建议将条件语句移动到方法中。如果这些情况发生变化,您可能需要相应地进行调整,并且很难判断哪种方式将导致长 运行 中的 cleaner/simpler 代码。在某种程度上你需要离开这里,你应该考虑将来如何使用它,如果从方法中排除条件将导致你在你的项目中进行 50 次检查,那么它应该在方法,如果这不会被经常使用,那么也许不值得进行重构,不调用该方法会更简单。