0

是否有人具有遵循 if...else 条件的优化逻辑.....
场景

  1. 有三个日期参数:DateFrom、DateUntil 和 NewDateUntil。
  2. If DateFrom <= DateNewUntil And DateUntil > NewDateUntil then添加警告消息并返回 true
  3. If DateFrom > DateNewUntil And DateUntil > DateNewUntil then添加警告消息并返回 false
  4. 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;
}
4

3 回答 3

4

这是你应该做的:

bool returnValue = pDateUntil <= pNewDateUntil.Date || pDateFrom <= pNewDateUntil.Date;
if ((pDateUntil > pNewDateUntil.Date))
{
    AddWarningMessage("Warning Message");
}
return returnValue;
于 2013-05-06T07:54:05.197 回答
1

Resharper 告诉我您可以执行以下操作:

bool returnValue;
if ((pDateUntil > pNewDateUntil.Date))
{
    returnValue = pDateFrom <= pNewDateUntil.Date;
    AddWarningMessage("Warning Message");
}
else
{
    returnValue = true;
}
return returnValue;
于 2013-05-06T07:54:19.867 回答
0

你只能做一些事情。您应该“排序”您的 if 语句并从最有可能的一个开始。请注意,编译器通常会很好地优化这些情况,并且还有分支预测可以提供帮助。

  if (condition_is_true_the_most often)
  {
      // your code here
  }
  else if (condition_is_true_less_often)
  {
      // your code here
  }
  .
  .
  .
  else if (...)
  {
  }
于 2013-05-06T08:00:28.143 回答