优化代码:提高效率和可读性
代码优化:提高效率和可读性
以下是一些优化代码的建议,可以提高代码效率和可读性:
-
使用LINQ方法链:避免在不同的代码块中重复写相同的代码。
-
删除重复的错误消息代码:将其移到try-catch块的末尾。
-
使用var关键字来声明变量:使代码更简洁。
-
将一些常量字符串提取为变量并重用:避免重复输入相同的字符串。
-
将查询的结果转换为IQueryable,而不是直接转换为List,以便在需要时进行延迟加载。
-
将查询的结果缓存起来,以避免重复查询数据库。
示例代码:
ResultListOfPageInfo<ProductionInfo> result = new ResultListOfPageInfo<ProductionInfo>();
var failMsg = '操作失败:';
var startTimeMsg = failMsg + '请输入开始时间';
var endTimeMsg = failMsg + '请输入结束时间';
var successMsg = '操作成功';
var errorMsg = failMsg;
try
{
if (!query.StartTime.HasValue)
{
result.IsSuccess = false;
result.ResultCode = ApiStatusCode.FAIL;
result.Msg = startTimeMsg;
}
if (!query.EndTime.HasValue)
{
result.IsSuccess = false;
result.ResultCode = ApiStatusCode.FAIL;
result.Msg = endTimeMsg;
}
var select = this.context.PromoteActionSet.Select;
var queryResult = select.Where(a => a.CreateTime >= query.StartTime && a.CreateTime <= query.EndTime);
var ls = new List<ProductionInfo>();
switch (query.QueryType)
{
case 0:
ls = queryResult.GroupBy(a => a.ActionDate).Select(a => new ProductionInfo()
{
CoalCode = a.Value.CoalCode,
CoalName = a.Value.CoalName,
Date = a.Key,
Quantity = a.Value.Quantity,
TaskSuccess = Math.Round((double)a.Sum(a.Value.ActionQuantity) / a.Value.Quantity, 2),
TaskSuccessDesc = (Math.Round((double)a.Sum(a.Value.ActionQuantity) / a.Value.Quantity, 2) * 100) + '%',
QuantitySum = (double)a.Sum(a.Value.ActionQuantity)
}).ToList();
break;
case 1:
ls = queryResult.GroupBy(a => a.ActionDate.Substring(0, 7)).Select(a => new ProductionInfo()
{
CoalCode = a.Value.CoalCode,
CoalName = a.Value.CoalName,
Date = a.Key,
Quantity = a.Value.Quantity,
TaskSuccess = Math.Round((double)a.Sum(a.Value.ActionQuantity) / a.Value.Quantity, 2),
TaskSuccessDesc = (Math.Round((double)a.Sum(a.Value.ActionQuantity) / a.Value.Quantity, 2) * 100) + '%',
QuantitySum = (double)a.Sum(a.Value.ActionQuantity)
}).ToList();
break;
default:
ls = queryResult.GroupBy(a => a.ActionDate.Substring(0, 4)).Select(a => new ProductionInfo()
{
CoalCode = a.Value.CoalCode,
CoalName = a.Value.CoalName,
Date = a.Key,
Quantity = a.Value.Quantity,
TaskSuccess = Math.Round((double)a.Sum(a.Value.ActionQuantity) / a.Value.Quantity, 2),
TaskSuccessDesc = (Math.Round((double)a.Sum(a.Value.ActionQuantity) / a.Value.Quantity, 2) * 100) + '%',
QuantitySum = (double)a.Sum(a.Value.ActionQuantity)
}).ToList();
break;
}
result.List = ls;
result.Total = ls.Count();
result.Msg = successMsg;
}
catch (Exception ex)
{
result.IsSuccess = false;
result.ResultCode = ApiStatusCode.ERROR;
result.Msg = errorMsg + ex.Message;
}
return result;
说明:
- 代码中的
queryResult是一个IQueryable类型的变量,可以用于延迟加载。 - 代码中使用了
var关键字来声明变量,使代码更简洁。 - 代码中将一些常量字符串提取为变量并重用,避免重复输入相同的字符串。
- 代码中使用了try-catch块来捕获异常,并输出错误信息。
通过以上代码优化,可以提高代码的效率和可读性,方便维护和扩展。
注意:
- 以上代码示例仅供参考,具体实现需要根据实际情况进行调整。
- 代码优化是一个持续的过程,需要不断改进和完善。
希望以上内容对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/m8KC 著作权归作者所有。请勿转载和采集!