2014-04-07 48 views
0

我在寫一個asp.net web應用程序,我希望用戶能夠選擇支付期限的結束。在日期時間強制一週中的某一天

工資期總是在星期六結束。

我使用壓延控制,並給它一個onSelectionChanged事件處理程序,如下所示:

protected void forceSaturdaySelection (object sender, EventArgs e) 
    { 
     Weekending.SelectedDate = Weekending.SelectedDate.AddDays(DayOfWeek.Saturday - Weekending.SelectedDate.DayOfWeek); 
    } 

此代碼的工作,因爲我想在Web應用程序選擇支付期結束用戶選擇,無論他們選擇一週中的哪一天。

我的問題是,是否有一個更可讀的方式來做到這一點?

回答

1

沒有......但這並不會阻止你自己做!創建一個擴展方法..或只是另一種方法來調用:

private DateTime getPayPeriodEnding(DateTime selectedDate) { 
    return selectedDate.AddDays(DayOfWeek.Saturday - selectedDate.DayOfWeek); 
} 

擴展方法版本:

public static DateTime NextPayPeriodEndDate(this DateTime selectedDate) { 
    return selectedDate.AddDays(DayOfWeek.Saturday - selectedDate.DayOfWeek); 
} 

然後你的代碼變得之一:

WeekEnding.SelectedDate = getPayPeriodEnding(WeekEnding.SelectedDate); 

或..

WeekEnding.SelectedDate = WeekEnding.SelectedDate.NextPayPeriodEndDate(); 
+0

這確實使它更具可讀性,這正是我問。話雖如此,但我不認爲單線功能需要將其內容發送給另一種方法,而這只是在一個位置完成。 –

+0

我不同意。從這個可讀性收益是顯而易見的。花30秒時間才能知道代碼的作用......但是一個很好的方法調用可以在極其短的時間內讀取和理解。青睞代碼大小的可讀性。 –

+0

與函數名稱提供的可讀性級別不同嗎?我可以改變它說一些關於薪酬期結束而不是星期六,但我看不出有什麼幫助。 –

相關問題