[英]C# refactor this messy code!
我基本上是為一個時間表頁面(ASP.NET MVC)創建一個平面視圖模型,它有一個星期幾的網格。 WorkTime屬性應該是數據庫中的現有WorkTime,如果沒有,則為null。
將只顯示1周(周六至周五)。 我在那里有各自的屬性,以便我的視圖中的語法應該更簡單。
+------+-----+-----+-----+-----+-----+-----+-----+
| Desc | Sat | Sun | Mon | Tue | Wed | Thu | Fri |
+------+-----+-----+-----+-----+-----+-----+-----+
|______|_____|_____|_____|_____|_____|_____|_____|
|______|_____|_____|_____|_____|_____|_____|_____|
|______|_____|_____|_____|_____|_____|_____|_____|
|______|_____|_____|_____|_____|_____|_____|_____|
來自和持久存儲到數據庫的所有日期都沒有Time元素(所有午夜時間),並且星期六到星期五DateTime屬性都已設置。
我正在設置的屬性
public WorkTime SaturdayWorkTime { get; private set; }
public WorkTime SundayWorkTime { get; private set; }
public WorkTime MondayWorkTime { get; private set; }
public WorkTime TuesdayWorkTime { get; private set; }
public WorkTime WednesdayWorkTime { get; private set; }
public WorkTime ThursdayWorkTime { get; private set; }
public WorkTime FridayWorkTime { get; private set; }
目前的迭代......
public DateTime Saturday { get; private set; }
public DateTime Sunday { get; private set; }
public DateTime Monday { get; private set; }
public DateTime Tuesday { get; private set; }
public DateTime Wednesday { get; private set; }
public DateTime Thursday { get; private set; }
public DateTime Friday { get; private set; }
_workTimes = _workTimeRepository.GetByWorkAssignmentID(WorkAssignment.ID, Saturday, Friday);
SaturdayWorkTime = GetWorkTimeForDay(DayOfWeek.Saturday);
SundayWorkTime = GetWorkTimeForDay(DayOfWeek.Sunday);
MondayWorkTime = GetWorkTimeForDay(DayOfWeek.Monday);
TuesdayWorkTime = GetWorkTimeForDay(DayOfWeek.Tuesday);
WednesdayWorkTime = GetWorkTimeForDay(DayOfWeek.Wednesday);
ThursdayWorkTime = GetWorkTimeForDay(DayOfWeek.Thursday);
FridayWorkTime = GetWorkTimeForDay(DayOfWeek.Friday);
用這個輔助方法......
private WorkTime GetWorkTimeForDay(DayOfWeek dow)
{
return _workTimes.FirstOrDefault(x => x.Date.DayOfWeek == dow);
}
這是一個小小的開始:
private WorkTime GetWorkTimeForDay(DayOfWeek dw)
{
return workTimes.FirstOrDefault(x => x.Date.DayOfWeek == dw);
}
為什么不創建一個字典來存儲這些工作時間?
private Dictionary<DayOfWeek, WorkTime> _workTimes;
使用_workTimeRepository.GetByWorkAssignmentID填充此字典應該非常簡單。
您可以擁有從DayOfWeek到WorkTime的地圖,以及從DayOfWeek到DateTime的另一個地圖,而不是擁有單個變量嗎? 對不起,我的C#生銹了,所以這可能不太對,但如果你有,那么看起來會更像這樣:
for (DayOfWeek day : allDays)
workTimes(day) = repository.FirstOrDefault(dateTimes(day));
為什么不只是擁有一個WorkTime屬性,並使其成為一個Dictionary並從您的工作時間存儲庫返回字典(而不是您的列表)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.