1
我有以下功能:如何重構此邏輯的函數參數:「僅當參數1爲真時才需要參數2」?
public enum class SetMinMaxMode
{
Auto, // min and max is set based on the channel data
Manual
};
generic<typename T> where T : System::ValueType
void SetData(array<T>^ data)
{
SetData(data, SetMinMaxMode::Auto, Double::MinValue, Double::MaxValue);
}
generic<typename T> where T : System::ValueType
void SetData(array<T>^ data, SetMinMaxMode minMaxMode, Double minValue, Double maxValue)
{
//
}
參數minValue(最小值)和包括maxValue當參數minMaxMode是SetMinMaxMode ::手冊時才使用。
如果有人這樣寫道功能:
SetData(data, SetMinMaxMode::Auto, desiredMinValue, desiredMaxValue);
然後,他可能不知道,最後的兩個參數都不會被使用。
我的問題是,有什麼方法可以重構,以便有人永遠不需要提供不必要的參數?
是,使用不同的功能名稱將是一個解決方案。但是如果你考慮如何實現這兩個函數,仍然需要一個「擴展」函數來獲取所有的參數,比如SetDataCore(data,mode,min,max)。 –
SetDataAuto可以用另外兩個參數調用SetDataManual。 'SetDataAuto(Data){SetDataManual(data,1,2); }' – mydogisbox
對不起,這裏可能會有困惑。 SetDataAuto將根據數據計算最小值和最大值,計算出的最小值和最大值僅在運行時已知。我想我可以做一些像'SetDataAuto(data){double min,max; FindMinMax(data,min,max); SetDataManual(data,min,max); }'。但是如果我真的想要一個**核心**函數來接受所有參數呢? –