下面的代碼的目的是確定某一特定日期下午12:00週四後有資格作爲「週末」,即最少2天前週一下午12:00C#的switch語句重構
是有更好的方法嗎?如果 - 其他人變得醜陋,戰略模式對於這一點太過分了。
public bool ValidateWeekend(DateTime pickupDate, DateTime dropoffDate)
{
TimeSpan ts = dropoffDate.Subtract(pickupDate);
if (ts.TotalDays >= 2 && ts.TotalDays <= 4)
{
switch (pickupDate.DayOfWeek)
{
case DayOfWeek.Thursday:
if (pickupDate.Hour >= 12)
{
switch (dropoffDate.DayOfWeek)
{
case DayOfWeek.Sunday:
return true;
case DayOfWeek.Monday:
if (dropoffDate.Hour <= 12)
{
return true;
}
return false;
}
}
break;
case DayOfWeek.Friday:
switch (dropoffDate.DayOfWeek)
{
case DayOfWeek.Sunday:
return true;
case DayOfWeek.Monday:
if (dropoffDate.Hour <= 12)
{
return true;
}
return false;
}
break;
case DayOfWeek.Saturday:
switch (dropoffDate.DayOfWeek)
{
case DayOfWeek.Sunday:
return true;
case DayOfWeek.Monday:
if (dropoffDate.Hour <= 12)
{
return true;
}
return false;
}
return false;
}
}
return false;
}
除了重構代碼複製到自己的方法,下面列出的,我是一個使用功能更強大的解決方案的忠實粉絲。將你每天的邏輯分解成它自己的特定功能,然後建立一個有幾天作爲關鍵字和適當的方法作爲值的地圖。如上所述,將您的提取日期放入自己的方法中,然後使用lamdas執行放棄邏輯,我認爲代碼變得更加清晰。 – 2009-11-25 15:56:00