Данная функция возвращает значение KPI, сначала проверяет его кеш, затем выполняет свою логику, кэширует результат и возвращает значение, обрабатывая условие сбоя.C# Лучший способ обмена логикой и повторного использования кода
Как я могу лучше использовать кэширование, логику обработки ошибок. То, что я, по сути, хочу создать, - это функция, которая просто выполняет необходимую логику с отобранным кодовым таблицей и повторно используется через несколько подобных функций.
public static int CurrentEmployees()
{
if (HttpRuntime.Cache["CurrentEmployees"] == null)
{
try
{
int CurrentEmployees = Employee.Load().Count(x => x.DateFinished == null && !x.Contractor && x.DateStarted < DateTime.Now);
HttpRuntime.Cache.Insert("CurrentEmployees", CurrentEmployees, null, DateTime.Now.AddMinutes(20), new TimeSpan(0, 10, 0));
return CurrentEmployees;
}
catch(Exception e)
{
//TODO: Report this
return -1;
}
}
else
return (int)HttpRuntime.Cache["CurrentEmployees"];
}
Как шаблонного кода оборачивают вокруг логики это трудно для меня, чтобы просто нажать их в другие вызовы функций.
Общая часть может входить в отдельный метод (иногда общий), отдельная часть либо передается в качестве параметров, либо делегируется, либо после выполнения (после вызова метода). Как выглядит другая функция? Назначение нового значения (в случае его отсутствия) может быть делегировано и добавлено с помощью lamda, а имя передается как параметр. – Sinatr
Мне кажется, что вы, вероятно, должны использовать [полиморфизм] (https://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29). Это широкая тема, хотя .. И зависит от вашей настройки. Не могли бы вы объяснить, что вы пробовали, и почему это не сработало? – Default