我寫了這段代碼。這真的很難看。我想重構它。我必須返回object[]
。我在考慮使用bool
值來檢查是否必須繼續調用其他方法,並且只需創建最終的object[]
。如何重構順序ifs?
private object[] TrasferisciSingoloFile(some parameters...)
{
Result result = new Result;
result = FTPRename(some parameters...);
if (result.error)
{
result.SetError("Some Problem 1");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
result = FTPDownloadAndCopy(some parameters...);
if (result.error)
{
result.SetError("Some Problem 2");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
result = FTPMove(some parameters...);
if (result.error)
{
result.SetError("Some Problem 3");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
result = FTPDelete(some parameters...);
if (result.error)
{
result.SetError("Some Problem 4");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
object tip1 = new object[] { par as ThreadCounterManager, result };
return (object[])tip1;
}
你有什麼問題嗎? –
根據代碼,在任何時間點,無論是1還是無成功。 可能是,對所有這些方法進行委託調用,從而從所有這些方法獲得結果[](假設所有參數都相同)。然後,至少有一個數組shud中的項是真的w.r.t result.error。所以生病的調用其他方法並返回[]。這會將你的代碼從很多ifs中減少到1或2. – Zenwalker
但是,在方法調用中會發生異常,並且分配永遠不會發生,因此結果將爲空或前一個方法的結果。 –