Joh*_*soe 20 c# lambda naming-conventions
我承认这个问题是主观的,但我对社区的看法很感兴趣.我有一个缓存类,它接受类型的缓存加载器函数Func<TResult>
,它用于从数据库中检索值并将其存储在缓存中.
public static class Cache
{
public TResult Get<TResult>(string cacheKey, Func<TResult> cacheLoader)
{
// Implementation
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:我应该如何命名函数参数?
cacheLoader
?loadResult
?cacheLoadFunction
?(我不喜欢这个.)我对我应该命名这个特定的函数参数不感兴趣,并且对如何命名函数参数更感兴趣.什么说你,Stack Overflow社区?
Joe*_*Joe 23
在框架中使用名词有先例,例如
Enumerable.Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector)
Enumerable.Count<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
Enumerable.GroupBy<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector)
ConcurrentDictionary<TKey,TValue>.GetOrAdd(TKey key,
Func<TKey, TValue> valueFactory);
Run Code Online (Sandbox Code Playgroud)
名词通常是带有后缀的合适动词.
在你的例子中,我会使用类似loader
或可能的东西valueFactory
.我个人不喜欢,cacheLoader
因为可能是调用者而不是代理人在缓存中插入工作.
我喜欢将它命名为方法,以便在调用它时,如下所示:
loadResult(result);
Run Code Online (Sandbox Code Playgroud)
它看起来像普通的方法调用,但是外壳表明它是一个变量,因此传递了两条信息.
您可以添加类似Method
或者后缀的后缀Delegate
,Lambda
但通常只是在不增加清晰度的情况下使其变得冗长.它可能取决于情况和您的编码标准,当然还有您的偏好.
我通常在命名中使用“委托”一词,以表明该参数正在接收委托。例如,我可能会将上面的名称命名为:
public static class Cache
{
public TResult Get<TResult>(string cacheKey, Func<TResult> cacheLoadingDelegate)
{
// Implementation
}
}
Run Code Online (Sandbox Code Playgroud)
我这样做是为了避免问题中建议的命名造成混淆。 cacheLoader
听起来太像一个对象,并且loadResult
像一个对象/类型(结果本身)。我个人也不喜欢使用function
or method
,因为委托实际上不是函数,而是委托 - 引用函数的类型。
归档时间: |
|
查看次数: |
6715 次 |
最近记录: |