在开发项目过程中我们往往为了赶项目,而做了一些吃力不讨好的事情。比如在编写功能代码时,我为了实现我们的功能没有花实现把整理逻辑里清楚,就开始写代码。
而这样的结果导致写完代码之后再去阅读理解之前的逻辑,需要花费好一段时间才能看得懂代码具体所表示的意思。同时也不利于方法的扩展,使得需要重新编写整理逻辑,这样其实在整理开发过程花的时间更多。 例如下面一段代码:
public static string[] GetDefaulttime()
{
int h = DateTime.Now.Hour;
int mn = DateTime.Now.Minute;
string taketime = string.Empty;
string takehour = string.Empty;
string takeminutes = "00";
string returntime = string.Empty;
string returnhour = string.Empty;
string returnminutes = "00";
if (h == 17)
{
if (mn <= 29)
{
h = DateTime.Now.Hour + 3;
taketime = DateTime.Today.ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
}
else
{
h = 8;
taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
}
}
else if (h < 7)
{
h = 10;
taketime = DateTime.Today.AddDays(0).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
}
else if (h >= 20)
{
h = 10;
if (DateTime.Now.Hour == 20 && mn <= 29)
h = 8;
taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
}
else if (h >= 7 && h < 17)
{
if (mn <= 29) h = DateTime.Now.Hour + 3;
else h = DateTime.Now.Hour + 4;
taketime = DateTime.Today.ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
}
else if (h > 17 && h <= 20)
{
h = 8;
if (DateTime.Now.Hour == 20 && mn > 29)
h = 10;
taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
}
takehour = h >= 10 ? h.ToString() : "0" + h.ToString();
returnhour = takehour;
string[] temp = { taketime, takehour, takeminutes, returntime, returnhour, returnminutes };
return temp;
}
返回时间数组,我首先先理理这个方法所表达的意思。
首先可以看出有两个时间区操作,一个是在17:30以前的,一个是17:30之后的时间处理方式。如下讲解:
1.在17:30时间段中只有h这个“时间”值有变化,而变化值分成两块:7点,7-17:30。
2.在17:30之后的时间段也只有时间h这个“时间”值有变化,其他两个变量都是相对固定值。
现在我们思路整理清晰后,我们可以重新编写这个返回时间数组方法。
public static string[] GetDefaulttime()
{
int h = DateTime.Now.Hour;
int mn = DateTime.Now.Minute;
int minutes=h * 60 + mn;
int addDay = minutes / (17 * 60 + 30);
//判断时间
h = addDay == 0 ? (h < 7 ? 10 : (DateTime.Now.Hour + 3 + mn / 30)) : (minutes < 20 * 60 + 30 ? 8 : 10);
string takehour, returnhour;
returnhour = takehour = (h >= 10 ? "" : "0") + h.ToString();
string taketime = DateTime.Today.AddDays(addDay).ToString("yyyy-MM-dd");
string returntime = DateTime.Today.AddDays(addDay + 1).ToString("yyyy-MM-dd");
return new string[] { taketime, takehour, "00", returntime, returnhour, "00" };
}
看看是不是清晰明了许多???
为自己的新站做下广告
百姓生活信息平台
而这样的结果导致写完代码之后再去阅读理解之前的逻辑,需要花费好一段时间才能看得懂代码具体所表示的意思。同时也不利于方法的扩展,使得需要重新编写整理逻辑,这样其实在整理开发过程花的时间更多。 例如下面一段代码:
public static string[] GetDefaulttime()
{
int h = DateTime.Now.Hour;
int mn = DateTime.Now.Minute;
string taketime = string.Empty;
string takehour = string.Empty;
string takeminutes = "00";
string returntime = string.Empty;
string returnhour = string.Empty;
string returnminutes = "00";
if (h == 17)
{
if (mn <= 29)
{
h = DateTime.Now.Hour + 3;
taketime = DateTime.Today.ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
}
else
{
h = 8;
taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
}
}
else if (h < 7)
{
h = 10;
taketime = DateTime.Today.AddDays(0).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
}
else if (h >= 20)
{
h = 10;
if (DateTime.Now.Hour == 20 && mn <= 29)
h = 8;
taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
}
else if (h >= 7 && h < 17)
{
if (mn <= 29) h = DateTime.Now.Hour + 3;
else h = DateTime.Now.Hour + 4;
taketime = DateTime.Today.ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
}
else if (h > 17 && h <= 20)
{
h = 8;
if (DateTime.Now.Hour == 20 && mn > 29)
h = 10;
taketime = DateTime.Today.AddDays(1).ToString("yyyy-MM-dd");
returntime = DateTime.Today.AddDays(2).ToString("yyyy-MM-dd");
}
takehour = h >= 10 ? h.ToString() : "0" + h.ToString();
returnhour = takehour;
string[] temp = { taketime, takehour, takeminutes, returntime, returnhour, returnminutes };
return temp;
}
返回时间数组,我首先先理理这个方法所表达的意思。
首先可以看出有两个时间区操作,一个是在17:30以前的,一个是17:30之后的时间处理方式。如下讲解:
1.在17:30时间段中只有h这个“时间”值有变化,而变化值分成两块:7点,7-17:30。
2.在17:30之后的时间段也只有时间h这个“时间”值有变化,其他两个变量都是相对固定值。
现在我们思路整理清晰后,我们可以重新编写这个返回时间数组方法。
public static string[] GetDefaulttime()
{
int h = DateTime.Now.Hour;
int mn = DateTime.Now.Minute;
int minutes=h * 60 + mn;
int addDay = minutes / (17 * 60 + 30);
//判断时间
h = addDay == 0 ? (h < 7 ? 10 : (DateTime.Now.Hour + 3 + mn / 30)) : (minutes < 20 * 60 + 30 ? 8 : 10);
string takehour, returnhour;
returnhour = takehour = (h >= 10 ? "" : "0") + h.ToString();
string taketime = DateTime.Today.AddDays(addDay).ToString("yyyy-MM-dd");
string returntime = DateTime.Today.AddDays(addDay + 1).ToString("yyyy-MM-dd");
return new string[] { taketime, takehour, "00", returntime, returnhour, "00" };
}
看看是不是清晰明了许多???
为自己的新站做下广告
百姓生活信息平台