在我的热情提高作为开发人员,我想知道我的代码是可能的改进,我在这方面是新手,并有非常小的逻辑
这是我的代码:
private int Period(DateTime date)
{
int period = 0;
if(date!= null)
{
int numeroMes = int.Parse(date.Month.ToString());
if(numeroMes <= 2)
{
period = 1;
}
else if (numeroMes <= 4 && numeroMes > 2)
{
periodo = 2;
}
else if (numeroMes <= 6 && numeroMes > 4)
{
period = 3;
}
else if (numeroMes <= 8 && numeroMes > 6)
{
period = 4;
}
else if (numeroMes <= 10 && numeroMes > 8)
{
period = 5;
}
else if (numeroMes <= 12 && numeroMes > 8)
{
period = 6;
}
}
return period ;
}感谢您的帮助。
发布于 2018-07-25 03:54:12
您可以计算周期,因为每个周期只有两个月。
正如DaveShaw指出的那样,不需要检查日期是否为null,因为DateTime是一个值类型,因此不能为null。
private int Period(DateTime date)
{
// already an int, no need to convert
var month = date.Month;
if (month % 2 == 0)
return month / 2;
else
return (month + 1) / 2
}这是A.S.建议的另一个更短的选择。
private int Period(DateTime date)
{
return (int)Math.Ceiling(date.Month / 2.0);
// or...
// return (date.Month + 1) / 2;
// but I prefer the Ceiling option since it is more obvious what is happening
}或者,您也可以通过这种方式减少代码...
private int Period(DateTime date)
{
int month = date.Month;
if (month <= 2)
return 1;
else if (month <= 4)
return 2;
else if (month <= 6)
return 3;
else if (month <= 8)
return 4;
else if (month <= 10)
return 5;
else
return 6;
}因为我使用了return语句,所以不需要在每个if语句中使用第二个bool。
发布于 2018-07-25 04:12:20
你可以使用整数除法的地板,这应该是更快的。
private int Period(DateTime date)
{
return (date.Month + 1) / 2;
}然而,四舍五入可能更容易理解。
private int Period(DateTime date)
{
return (int)Math.Ceiling(date.Month / 2.0);
}发布于 2018-07-25 04:12:53
正如其他人所说,这更适合https://codereview.stackexchange.com/,因为这不是一个问题。
现在对您的代码进行一些改进。
if(date!= null)这总是正确的,因为DateTime是一个值类型(结构),它不能为空。只有Nullable/DateTime?可以为null。所以你可以简单的去掉它。
int numeroMes = int.Parse(date.Month.ToString());在这里,您将date.Month (整型)转换为字符串,然后将其解析回整型。不要这样做,date.Month已经是一个整数了:
int numeroMes = date.Month;到目前为止,其余的都还可以,但我猜是这样的:
else if (numeroMes <= 12 && numeroMes > 8)你真正的意思是numeroMes > 10。虽然值9和10在这之前是匹配的,但这并没有区别。
最后,您可以将所有这些if缩短为一个简单的公式:
return (int)Math.Ceiling(date.Month / 2.0);Math.Ceiling将传递的小数向上舍入为下一个整数。例如,1.5就变成了2。
https://stackoverflow.com/questions/51506498
复制相似问题