Imr*_*zvi 1 c# asp.net resharper
在下面的方法中,从不使用参数fromDate和toDate的值,因为它们在被读取之前会被覆盖在正文中.
static void GetDatesFromMonth(string month, ref DateTime fromDate, ref DateTime toDate)
{
DateTime userDateTime = TimeHelper.getUserGMTNow();
DateTime calculatedDate = Convert.ToDateTime(month + " 01," + userDateTime.Year);
toDate = calculatedDate.AddMonths(1).AddSeconds(-1);
fromDate = toDate.AddMonths(-12).AddSeconds(1);
}
Run Code Online (Sandbox Code Playgroud)
我在我的类文件中的许多地方使用此代码.
当我在我的代码上运行Resharper时,它会显示此消息,并且与其他所有其他建议不同,它无法更正此代码块
任何人都可以帮助我用良好的编码实践重写这个方法.
将两个日期参数更改为 out
static void GetDatesFromMonth(string month, out DateTime fromDate, out DateTime toDate)
Run Code Online (Sandbox Code Playgroud)
请参阅此处以了解out vs ref
简单地说,当你的方法需要返回两个或多个值时,你会使用out,out表示'我将在退出之前设置这个值'.相反,ref更复杂.这意味着'我需要在此方法中使用此值/对象,我将在退出之前更改它们'
或者,因为输出参数通常是代码味道,您可能需要重写您的方法,如:
static Tuple<DateTime, DateTime> GetDatesFromMonth(string month)
{
...
}
Run Code Online (Sandbox Code Playgroud)
要么
static ToFromDates GetDatesFromMonth(string month)
{
...
}
Run Code Online (Sandbox Code Playgroud)
同
class ToFromDates
{
public DateTime To{get;set;}
public DateTime From{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
您还可以创建扩展方法
static class DateExtensions
{
public static Tuple<DateTime, DateTime> GetDatesFromMonth(this string month)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
并在你的代码中使用它
var dates = "January".GetDatesFromMonth();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2207 次 |
| 最近记录: |