我有一个方法可以完成几项任务.它是应用程序业务逻辑的一部分,但由于许多if-then和try-catch块以及许多日志调用,它的可读性很差.
public class MyClass {
boolean createReport, sendReport, warnIfErrors;
public void archiveAll() {
if (createReport) {
//... ...
}
if (sendReport) {
//... ...
}
if (warnIfErrors) {
//... ...
}
}
我们的想法是将任务转移到临时方法中,并使用“archiveAll”方法,一目了然:
public void archiveAll() {
doCreateReport();
doSendReport();
doWarnIfErrors();
}
但是这样做会产生两个问题:
>如果所有方法都使用局部变量,我会将其作为类字段移动,但这不是好设计
>我想将测试if(createReport)也移动到方法doCreateReport中,因为部分复杂性来自于完成的测试.这使得子方法的内聚性很差.