Methods 在方法本身中集成外部条件时?

Methods 在方法本身中集成外部条件时?,methods,conditional-statements,external,Methods,Conditional Statements,External,有这样一种方法: public double calculateCost(); 我可以做下一件事: if(!personIsPartner) { double cost = calculateCost(); } 或 我的意思是,当你调用一个方法时,你必须先评估相同的条件 这些条件应该是方法本身的一部分,就像上一个例子一样?我认为应该是这样的,因为如果您必须从许多地方调用该方法,并从该方法中提取该条件,那么您将重复代码,对吗 是某种模式在谈论它吗 谢谢最后,这真的取决于开发者的判断。对

有这样一种方法:

public double calculateCost();
我可以做下一件事:

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

我的意思是,当你调用一个方法时,你必须先评估相同的条件

  • 这些条件应该是方法本身的一部分,就像上一个例子一样?我认为应该是这样的,因为如果您必须从许多地方调用该方法,并从该方法中提取该条件,那么您将重复代码,对吗
  • 是某种模式在谈论它吗

谢谢

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

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

根据您所包含的详细信息,我建议将条件移动到方法中。如果这些情况发生变化,您可能必须进行相应调整,并且很难判断从长远来看哪种方式将导致更干净/更简单的代码。在某种程度上,您需要在这里感受一下,您应该考虑这是如何实现的将在将来使用,如果从方法中排除条件将导致您在项目中进行50次检查,那么它应该在方法中,如果这不会被大量使用,那么可能不值得进行重构,不调用该方法会更简单

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