我遇到了这个代码,其中一个方法调用,例如ClassA.search(a,b,flag)正在被3个控制器使用。这是该方法的简化版本:这是重用/共享方法的好方法吗?
public List<Result> search(Object a, Object b, boolean flag) {
//do some code logic here, common to the 3 controllers
//at the middle there is:
if (flag) {
//code that affects 2 Controllers
} else {
//code affects only 1
}
//some more common code
//some more code with the flag if else
}
这是一个好主意,因为代码被重用?还是有更好的方法仍然能够重用代码,但不会引入方法调用者(客户端)代码自定义的这个标志(例如可能将其分割为3种不同的方法,但仍然能够声明通用代码重构方法)?
我同意这一点,只要你不把局部变量变成字段来使它工作。 –
为什么你会发现局部变量不好?如果您必须反复遍历参数的状态非常重要,请创建一次性对象,并将状态初始化为构造函数中的最终字段并仅使用一次。功能类固醇;-)。 –
这是真的,但添加一个类与字段(和一个构造函数?)是很多工作,以避免一个标志。 ;) –