【发布时间】:2021-11-21 06:02:52
【问题描述】:
我有一个类似的代码块,它接受 3 个参数并使用其中两个来返回值,如下所示:
int getAttempts(int foo, List<Object> bar, List<Object> baz) {
int count = 5;
bar.add(new Object()); // These both require further method calls before they are populated.
baz.add(new Object());
return count;
}
以上是一个简单的例子,但它涵盖了问题所在。
修改输入参数会使行为难以推理。
那么对于干净的重构有什么想法吗?
一种选择是制作包装对象,但我认为这不是一个可行的选择,因为对于其他所有方法,我都必须制作单独的包装对象。
【问题讨论】:
-
重构代码的一件事是策略通常取决于代码的细节。您显示的代码似乎过于简单,无法给出答案。
-
特别是:“使用输入参数作为返回类型”不清楚你的意思是什么:返回类型是
int。你是说这与...foo有关? -
@AndyTurner 我的意思是它使用传递给它的参数作为输出值的容器。
-
那与它的返回类型无关。
-
@AndyTurner, Output parameters 通常被称为返回参数。在这种情况下,OP 将它们命名为返回类型。就可读性而言,它们通常被认为是 OOP 中的“不好的做法”。例如,参见 Clean Code 一书。
标签: java refactoring