我有兩種方法酷似對方,但只是在一條線上 想象:通過傳遞方法或其他東西來刪除重複的代碼?
public void ApplyHorizontalScale(int x, int Y)
{
// Code 1
forecast.Formula = Method1(X, Y);
// Code 2
}
public void ApplyVerticalScale(int x, int Y)
{
// Code 1
forecast.Formula = Method2("Foo");
// Code 2
}
int Method1(int x , int y)
{
return x+y;
}
int Method2(string s)
{
return Foo.Length;
}
的問題是代碼1和2的代碼已經被重複了兩次! 我怎麼能有這樣的:
public void ApplyScale(int x, int Y, WhichMethod)
{
// Code 1
forecast.Formula = WhichMethod();
// Code 2
}
請注意方法1和方法2有不同的簽名,也是其中之一是訪問一個私有成員。
我認爲你做錯了..認爲如果你真的需要有兩種方法做同樣的事情,但一行代碼.. –
參數「bool useMethod1」和一個老式的預測有什麼問題。 Formula = useMethod1?Method1(x,y):Method2(「Foo」);「 – Eddy
好吧,我試圖找到一個更好的解決方案:-) –