代码优化:提高效率和可读性

以下是一些优化代码的建议,可以提高代码效率和可读性:

  1. 使用LINQ方法链:避免在不同的代码块中重复写相同的代码。

  2. 删除重复的错误消息代码:将其移到try-catch块的末尾。

  3. 使用var关键字来声明变量:使代码更简洁。

  4. 将一些常量字符串提取为变量并重用:避免重复输入相同的字符串。

  5. 将查询的结果转换为IQueryable,而不是直接转换为List,以便在需要时进行延迟加载。

  6. 将查询的结果缓存起来,以避免重复查询数据库。

示例代码:

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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录