在方法本身中整合外部条件时?
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 次检查,那么它应该在方法,如果这不会被经常使用,那么也许不值得进行重构,不调用该方法会更简单。
有这样的方法:
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 次检查,那么它应该在方法,如果这不会被经常使用,那么也许不值得进行重构,不调用该方法会更简单。