是否有任何人有一个优化的逻辑来跟随if ... else条件......
示例
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;
}
答案 0 :(得分:4)
这是你应该做的:
bool returnValue = pDateUntil <= pNewDateUntil.Date || pDateFrom <= pNewDateUntil.Date;
if ((pDateUntil > pNewDateUntil.Date))
{
AddWarningMessage("Warning Message");
}
return returnValue;
答案 1 :(得分:1)
Resharper告诉我你可以做到以下几点:
bool returnValue;
if ((pDateUntil > pNewDateUntil.Date))
{
returnValue = pDateFrom <= pNewDateUntil.Date;
AddWarningMessage("Warning Message");
}
else
{
returnValue = true;
}
return returnValue;
答案 2 :(得分:0)
你只能做一些事情。你应该“排序”你的if语句并从最可能的语句开始。请注意,编译器通常会很好地优化这些情况,并且还有分支预测可以帮助。
if (condition_is_true_the_most often)
{
// your code here
}
else if (condition_is_true_less_often)
{
// your code here
}
.
.
.
else if (...)
{
}