次のコード分析警告メッセージが表示されましたが、その問題を解決する手がかりがありません。お知らせ下さい。
CA1506 過度のクラス結合を回避
します 'RetailerController.RetailerFormSummary(string)' は、13 の異なる名前空間からの 33 の異なる型と結合されています。メソッドを書き直すかリファクタリングしてクラスの結合を減らすか、メソッドを他の型のいずれかに移動することを検討してください。40 を超えるクラス結合は保守性が低いことを示し、クラス結合が 40 から 30 の間の場合は保守性が中程度であることを示し、クラス結合が 30 未満である場合は保守性が良好であることを示します。OnePlaceWebApp.Web RetailerController.cs 564
メソッド RetailerFormSummary(string) は次のようになります。
public ViewResult RetailerFormSummary(string retailerId)
{
AlertService alertService = new AlertService();
PageInfo winnersPageInfo = new PageInfo();
RetailerFormModelSummary model = new RetailerFormModelSummary();
winnersPageInfo.ItemsPerPage = _configurationUtility.SummaryWinnersCount;
winnersPageInfo.PageIndex = 0;
model.CurrencyFormat = _configurationUtility.CurrencyFormat;
model.DateFormat = _configurationUtility.DateFormat;
model.DatePickerFormat = _configurationUtility.DatePickerFormat;
model.Reps = _userService.GetReps(_userService.GetCurrentWebAppUserId());
model.UsesDistricts = _configurationService.GetUsesDistricts();
RetailerDto retailer = _retailerService.SelectRetailer(retailerId);
if (retailer != null)
{
RetailerJurisdictionDto retailerJurisdiction = _retailerSummaryService.SelectRetailerJurisdiction(retailer.Id);
JurisdictionDto territory = null;
JurisdictionDto district = null;
JurisdictionDto region = null;
DateTime? lastVisit = _retailerSummaryService.SelectLastVisitUtcDate(retailer.Id);
if (retailerJurisdiction != null)
{
territory = _jurisdictionService.SelectJurisdictionUsingIdAndType(retailerJurisdiction.JurisdictionId, JurisdictionTypes.Territory);
district = _jurisdictionService.SelectJurisdictionUsingIdAndType(retailerJurisdiction.JurisdictionId, JurisdictionTypes.District);
region = _jurisdictionService.SelectJurisdictionUsingIdAndType(retailerJurisdiction.JurisdictionId, JurisdictionTypes.Region);
}
model.Address1 = retailer.Street1;
if (retailer.Street2 != null)
{
model.Address2 = retailer.Street2;
}
if (retailer.CorporateAccount != null)
{
model.CorporateAccount = FormatService.GetTwoPartName(retailer.CorporateAccount.Number, retailer.CorporateAccount.Name, " - ");
}
model.CorporateAccountName = _termsService.SelectSingularTermValue(TermTypes.CorporateAccount);
model.City = retailer.City;
if (district != null)
{
model.District = FormatService.GetTwoPartName(district.Number, district.Name, " - ");
}
if (lastVisit.HasValue)
{
model.LastVisit = lastVisit.Value.DayOfWeek.ToString() + " " + lastVisit.Value.ToLocalTime().ToString(model.DateFormat, CultureInfo.CurrentCulture);
}
model.Note = _retailerSummaryService.SelectRetailerComment(retailer.Id);
model.Phone = FormatService.FormatPhoneNumber(retailer.Phone);
if (region != null)
{
model.Region = FormatService.GetTwoPartName(region.Number, region.Name, " - ");
}
model.RegionTerm = _termsService.SelectSingularTermValue(TermTypes.Region);
model.RetailerId = retailer.Id.ToString(CultureInfo.CurrentCulture);
model.RetailerName = retailer.BusinessName;
ViewBag.Title = retailer.BusinessName;
model.RetailerNumber = retailer.DisplayNumber;
model.RetailerAlerts = alertService.GetRetailerAlertsStringArray(retailer.RetailerAlerts);
model.Route = _routeManagerService.GetRouteStringForRetailer(retailerId);
model.Tasks = _retailerSummaryService.SelectRetailerTasks(retailer.Id);
if (territory != null)
{
model.Territory = FormatService.GetTwoPartName(territory.Number, territory.Name, " - ");
}
model.TerritoryTerm = _termsService.SelectSingularTermValue(TermTypes.Territory);
model.WeeklySales = _retailerSummaryService.SelectWeeklySales(retailerId);
model.Winners = _retailerWinnersService.SelectWinners(retailerId, WinnersSortTypes.Date, winnersPageInfo);
model.ZipCode = retailer.ZipCode;
}
return View("RetailerFormSummary/RetailerFormSummary", model);
}