我在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);
}
}
答案 0 :(得分:1)
这段代码是OOP方式:它依赖于实例方法,它使对象之间进行协作 每个条件陈述都不一定是坏事。
实际代码中的条件语句是逻辑,更具体地说是一些数据检查 它与条件语句没有任何关系,其中每个分支与可以移动到特定子类/实现中的特定行为匹配。