我遇到了這個代碼,其中一個方法調用,例如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種不同的方法,但仍然能夠聲明通用代碼重構方法)?
我同意這一點,只要你不把局部變量變成字段來使它工作。 –
爲什麼你會發現局部變量不好?如果您必須反覆遍歷參數的狀態非常重要,請創建一次性對象,並將狀態初始化爲構造函數中的最終字段並僅使用一次。功能類固醇;-)。 –
這是真的,但添加一個類與字段(和一個構造函數?)是很多工作,以避免一個標誌。 ;) –