对象在一个方法中被隐式修改并被另一个方法使用

Object is modified implicitly in one method and used by another

我有两种方法meth1meth2meth1接受一个集合set1的输入,return一个值,同时修改set1.

现在 meth2 使用此 set1 计算另一个 return 值。

我在这段代码中看到的问题是集合修改是隐式的,不够细心的编码人员可能会错过。

我可以在一个方法中完成所有操作,但是这两种方法的工作方式不同,足以将它们放在不同的方法中。另外一个方法会很长。

鉴于我必须在这里使用两种方法,避免隐式修改的最佳方法是什么?处理这种情况的最佳做法是什么?

非常感谢任何指点。


方法签名:

meth1:

private List<CustomObject> meth1(List<CustomObjectOnWhichOperationIsPerformed> lst,
Set<AnotherCustomObject> set1, Map<String, AnotherCustomObject> mp) {
// Iterate on lst, call mp and remove AnotherCustomObject entities from set1
}

meth2:

private List<CustomObject> meth2(Set<AnotherCustomObject> set1) {
// Iterate on set1 to create the list
}

可以用不同的方式解决这个问题吗?这看起来违反了单一责任原则。第一个方法 return 是一个值,但也会修改传递给它的参数。

将第一种方法分成两种方法

  1. 修改集合(显式)
  2. 处理获取第一个 return 值的逻辑

然后是最后一步

  1. 计算另一个 return 值