如何重构两个函数之间的公共代码行

问题描述 投票:0回答:1

我有以下示例代码:

public String X() throws JAXBException {
    LC lc=getLC();
    Comp comp = genComp(lc);
    return convToStr(comp);
}

public void Y() throws JAXBException, IOException {
    LC lc=getLC();
    Comp comp = genComp(lc);
    Files.writeString(Paths.get(getName(lc)), convToStr(comp), StandardCharsets.UTF_8);
}

我正在尝试将其简化为代码:

LC lc=getLC();
Comp comp = genComp(lc);  

在两个函数中重复。但是由于 getName 函数需要

lc
我无法消除这种口是心非。

我不确定的另一件事是;像

   Files.writeString(Paths.get(getName(lc)), convToStr(comp), StandardCharsets.UTF_8);
这样进行函数调用是个好主意,还是将每个参数存储在一个更有意义的变量名中并传递该变量。哪种方法更好?

java refactoring code-duplication
1个回答
0
投票

我不会为这么小的重复而烦恼。然而;你总是可以通过延迟加载将 LC 和 Comp 分解为静态变量。这会快一点,因为我们不需要多次计算 Comp,而是计算一次。然而,我们最终会得到比开始时更多的代码,而且编译器可能对此进行了很好的优化。

© www.soinside.com 2019 - 2024. All rights reserved.