我有一个大对象,在对它做某事之前,我需要检查多个条件。我有一个很大的功能。它是不可读的,我想把它拆开来做更小的函数,让我的代码更清晰。
该函数正在检查条件,如果有问题,它会停止并返回问题(属于一种enum
类型)。
它看起来像这样:
AnswerEnum CheckEverything(Bigobj o)
{
// some calculation
if (...)
return AnswerEnum.Error1;
// some more calculation
if (...)
return AnswerEnum.Error2;
...
return AnswerEnum.OK;
}
现在,我想在较小的函数中进行计算,我可以做以下事情:
AnswerEnum CheckEverything(Bigobj o)
{
AnswerEnum ret;
ret=CheckFirstThing(o);
if (ret!=AnswerEnum.OK)
return ret;
ret=CheckSecondThing(o);
if (ret!=AnswerEnum.OK)
return ret;
...
return AnswerEnum.OK;
}
该解决方案包含
if (ret!=AnswerEnum.OK)
return ret;
多次,我不喜欢它。我想尽量减少return
语句的数量和代码的任何重复部分。在这种情况下我该怎么做?