【发布时间】:2011-09-05 08:39:46
【问题描述】:
我写了这段代码。真的很丑。我想重构它。我必须返回一个object[]。我在想也许可以使用bool 值来检查我是否必须继续调用其他方法,并且只创建最终的object[]。
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。可能是,对所有这些方法进行委托调用,从而从所有方法中获取结果 [](假设所有参数都相同)。然后数组中的至少 1 个项目应该是 true w.r.t result.error。所以生病调用其他方法并返回[]。这会将您的代码从许多 if 减少到可能是 1 或 2。
-
但是在方法调用中会发生异常,并且分配永远不会发生,因此结果将为空,或前一个方法的结果。
-
是的,但是即使在 OPs 代码异常也没有处理,所以没想到。
-
对于初学者,在任何情况下都不需要投小费。它已经是一个对象[];你可以简单地
return tip。
标签: c# refactoring