你能摆脱这些ifs并使这段代码更加面向对象

时间:2018-04-26 21:53:30

标签: java refactoring

我在GitHub找到了以下任务。这有点让我感兴趣。有人可以给我一些关于如何进行这些任务的技巧吗?你能摆脱这些ifs并使这段代码更加面向对象吗?“

public class TheService {
private final FileHandler fileHandler;
private final FooRepository fooRepository;

public TheService(FileHandler fileHandler, FooRepository fooRepository) {
    this.fileHandler = fileHandler;
    this.fooRepository = fooRepository;
}

public String Execute(final String file) {

    final String rewrittenUrl = fileHandler.getXmlFileFromFileName(file);
    final String executionId = fileHandler.getExecutionIdFromFileName(file);

    if (executionId.equals("") || rewrittenUrl.equals("")) {
        return "";
    }

    Foo knownFoo = fooRepository.getFooByXmlFileName(rewrittenUrl);

    if (knownFoo == null) {
        return "";
    }

    return knownFoo.DoThat(file);
}

}

1 个答案:

答案 0 :(得分:1)

这段代码是OOP方式:它依赖于实例方法,它使对象之间进行协作 每个条件陈述都不一定是坏事。

实际代码中的条件语句是逻辑,更具体地说是一些数据检查 它与条件语句没有任何关系,其中每个分支与可以移动到特定子类/实现中的特定行为匹配。