【发布时间】:2015-07-10 13:10:17
【问题描述】:
给定函数返回一个 KPI 值,首先检查其缓存,然后执行其逻辑,缓存结果并返回一个值,处理失败条件。
如何最好地重用缓存、错误处理逻辑。我本质上想要创建的是一个函数,它只执行必要的逻辑,并将样板代码抽象出来并在多个类似函数中重复使用。
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 委托和添加分配的新值(以防它丢失),而 name 作为参数传递。
-
在我看来你应该使用polymorphism。不过,这是一个广泛的话题.. 并且取决于您的设置。您能解释一下您尝试过的方法以及为什么没有奏效吗?
标签: c# code-reuse