[英]IF ELSE condition in SELECT statement of LINQ query with DATEADD() logic
[英]Optimized logic in an if…else condition
如果...其他條件,是否有人有優化的邏輯來遵循?
腳本
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 (...)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.