对象在一个方法中被隐式修改并被另一个方法使用
Object is modified implicitly in one method and used by another
我有两种方法meth1
和meth2
。 meth1
接受一个集合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 是一个值,但也会修改传递给它的参数。
将第一种方法分成两种方法
- 修改集合(显式)
- 处理获取第一个 return 值的逻辑
然后是最后一步
- 计算另一个 return 值
我有两种方法meth1
和meth2
。 meth1
接受一个集合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 是一个值,但也会修改传递给它的参数。
将第一种方法分成两种方法
- 修改集合(显式)
- 处理获取第一个 return 值的逻辑
然后是最后一步
- 计算另一个 return 值