以前我有一種叫做「搜索」的方法。這個方法實際上做了兩件事:搜索/返回找到的文章,並計算結果集的一些數據。我現在創建了兩種方法:一種用於搜索和回饋文章。其他搜索和計算數據。重構:結合兩種方法
private List<SummaryRootEntity> search(int contentId,SearchModel query, bool includeTypeGroupFilters = true)
{
cleanQuery(query);
var inactiveForDays = getinactiveForDays();
var searchProfileGroups = _manager.GetSearchProfileGroupsForSite(query.PropertyType);
setLocationOfInterest(query);
var searchBounds = _manager.GetSearchBounds(query.StreetID, query.SublocalityID);
var shopsList = getShops();
searchmodelDto.shops = shopsList;
var filteredArticles = _articleService.Search(
contentId,
query,
searchBounds,
searchProfileGroups,
inactiveForDays,
includeTypeGroupFilters);
// apply ordering
var result = filteredArticles.ApplyOrdering(query.ForSaleOrRent, query.OrderBy, query.OrderDescending).ToList();
return result;
}
第二個,搜索並計算統計::
private List<SummaryRootEntity> searchWithStats(
int contentId,
SearchModel query,
out FacetStatisticsModel stats,
bool includeTypeGroupFilters = true)
{
cleanQuery(query);
var inactiveForDays = getinactiveForDays();
var searchProfileGroups = _manager.GetSearchProfileGroupsForSite(query.Type);
setLocationOfInterest(query);
var searchBounds = _manager.GetSearchBounds(query.StreetID, query.SublocalityID);
var shopsList = getShops();
query.shops = shopsList;
var filteredArticles = _articleService.Search(
contentId,
query,
searchBounds,
searchProfileGroups,
inactiveForDays,
includeTypeGroupFilters);
var displaySearchResultSummary = getDisplaySearchResult ?? true;
var stats = _articleService.GetStatistics(
Site.ContentRoot.Id,
shopsList,
inactiveForDays,
displaySearchResultSummary,
searchProfileGroups,
filteredArticles,
query,
searchBounds,
Site.DefaultCultureInfo);
// apply ordering
var result = filteredArticles.ApplyOrdering(query.ForSaleOrRent, query.OrderBy, query.OrderDescending).ToList();
return result;
}
第二種方法的開始是相同的第一個
僅執行所述搜索的第一種方法。第二種方法通過「out」參數返回統計信息。
有沒有什麼辦法可以用不同的方法計算統計數據?我可以將搜索從第二種方法中提取出來,但是之後我必須定義所有變量兩次(inactiveForDays,searchProfileGroups,searchBounds)。
就我所見,你的第二個函數永遠不會填充out參數。 – Nyerguds
現在呢,錯別字 – user2939331