优化了if…else条件下的逻辑
本文关键字:条件下 else if 优化 | 更新日期: 2023-09-27 18:12:20
是否有人有一个优化的逻辑以下如果…其他的条件……场景
- 有三个日期参数:DateFrom, DateUntil和NewDateUntil。
-
If DateFrom <= DateNewUntil And DateUntil > NewDateUntil then
添加警告消息并返回true -
If DateFrom > DateNewUntil And DateUntil > DateNewUntil then
添加警告消息并返回false -
If DateUntil < DateNewUntil
然后是returns true
。
原始代码如下注释。尝试了一些优化。
请看
public bool ValidateDate(DateTime pDateFrom, DateTime pDateUntil, DateTime pNewDateUntil)
{
////Original Code
//if ((pDateUntil.Date > pNewDateUntil.Date))
//{
// if ((pDateFrom.Date <= pNewDateUntil.Date))
// {
// pDateUntil = pNewDateUntil;
// AddWarningMessage("Warning Message");
// return true;
// }
// else if ((pDateFrom.Date > pNewDateUntil.Date))
// {
// AddWarningMessage("Warning Message");
// return false;
// }
//}
//else
//{
// return true;
//}
//Optimized As:
bool returnValue = false;
if ((pDateUntil > pNewDateUntil.Date))
{
returnValue = pDateFrom <= pNewDateUntil.Date ? true : false;
AddWarningMessage("Warning Message");
}
else
{
returnValue = true;
}
return returnValue;
}
你应该这样做:
bool returnValue = pDateUntil <= pNewDateUntil.Date || pDateFrom <= pNewDateUntil.Date;
if ((pDateUntil > pNewDateUntil.Date))
{
AddWarningMessage("Warning Message");
}
return returnValue;
Resharper告诉我你可以这样做:
bool returnValue;
if ((pDateUntil > pNewDateUntil.Date))
{
returnValue = pDateFrom <= pNewDateUntil.Date;
AddWarningMessage("Warning Message");
}
else
{
returnValue = true;
}
return returnValue;
你能做的只有几件事。你应该对if语句进行"排序",从最有可能的语句开始。请注意,编译器通常会很好地优化这些情况,并且分支预测也会有所帮助。
if (condition_is_true_the_most often)
{
// your code here
}
else if (condition_is_true_less_often)
{
// your code here
}
.
.
.
else if (...)
{
}