以下是优化后的代码:

ResultListOfPageInfo result = new ResultListOfPageInfo(); try { if (!query.StartTime.HasValue || !query.EndTime.HasValue) { ThrowInvalidInputException("请输入开始时间和结束时间"); } if (query.EndTime < query.StartTime) { ThrowInvalidInputException("开始时间大于结束时间"); } DateTime endTime = GetEndTime(query); var ls = GetProductionInfoList(query.StartTime, endTime); result.List = ls; result.Total = ls.Count(); result.Msg = "操作成功"; } catch (Exception ex) { result.IsSuccess = false; result.ResultCode = ApiStatusCode.ERROR; result.Msg = "操作失败" + ex.Message; } return result;

private void ThrowInvalidInputException(string message) { throw new ArgumentException("操作失败:" + message); }

private DateTime GetEndTime(Query query) { DateTime endTime; switch (query.QueryType) { case 0: endTime = query.EndTime.Value.AddDays(1); break; case 1: endTime = query.EndTime.Value.AddMinutes(1); break; default: endTime = query.EndTime.Value.AddYears(1); break; } return endTime; }

private List GetProductionInfoList(DateTime startTime, DateTime endTime) { var select = this.context.PromoteActionSet.Select; select.Where(a => a.CreateTime >= startTime && a.CreateTime < endTime); var ls = select .GroupBy(a => new { Date = (query.QueryType == 0 ? a.ActionDate : query.QueryType == 1 ? a.ActionDate.Substring(0, 7) : a.ActionDate.Substring(0, 4)), a.CoalCode }). Select(a => new ProductionInfo() { CoalCode = a.Key.CoalCode, CoalName = a.Value.CoalName, Date = a.Key.Date, 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 = Math.Round((double)a.Sum(a.Value.ActionQuantity), 2) }).ToList(); return ls; }

主要优化点如下:

  1. 把输入参数的验证和异常抛出提取成一个单独的方法 ThrowInvalidInputException,避免代码重复。
  2. 把获取结束时间的逻辑提取成一个单独的方法 GetEndTime,使代码更加清晰易读。
  3. 把查询生产信息的逻辑提取成一个单独的方法 GetProductionInfoList,使代码更加模块化,易于维护。
怎么优化下面代码ResultListOfPageInfoProductionInfo result = new ResultListOfPageInfoProductionInfo; try if !queryStartTimeHasValue !queryEndTimeHasValue

原文地址: https://www.cveoy.top/t/topic/bEIC 著作权归作者所有。请勿转载和采集!

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