具有异步委托的异步函数的命名约定
Naming convention for async functions with async delegates
我正在开发一个 API,我正在寻找一个好的、易于理解的命名约定。
考虑相同功能的这些不同类型的重载:
public async Task<TResult> DoAsync<T,TResult>(Func<T,TResult> func)
{
var t = await ProcessAsync();
return func(t);
}
public async Task<TResult> DoAsyncAlsoAwaitDelegateAsync<T,TResult>(Func<T,Task<TResult>> funcAsync);
{
var t = await ProcessAsync();
return await funcAsync(t);
}
请注意,我不能重载 DoAsync<T,TResult>(Func<T,Task<TResult>> func)
因为它会导致调用不明确。
用户可以通过在调用时指定参数名来解决调用不明确的问题,但我宁愿尽可能不要造成不必要的混淆。
DoAlsoAwaitDelegateAsync
是一个相当笨拙的名字,所以我在这里寻找替代的命名约定。
如果 你必须完全接受一个委托(而不是仅仅将计算值返回给调用者并让他们自己做 function/task 组合)我会只有接受 Func<T,Task<TResult>>
的版本。
让调用者决定他们是否有自己的异步函数,或者只给你一个完全同步执行的函数,然后 returns Task.FromResult()
。而不是(当前)编写您的函数的两个版本,只是 它 是否知道委托 可能 利用一些异步。
我正在开发一个 API,我正在寻找一个好的、易于理解的命名约定。
考虑相同功能的这些不同类型的重载:
public async Task<TResult> DoAsync<T,TResult>(Func<T,TResult> func)
{
var t = await ProcessAsync();
return func(t);
}
public async Task<TResult> DoAsyncAlsoAwaitDelegateAsync<T,TResult>(Func<T,Task<TResult>> funcAsync);
{
var t = await ProcessAsync();
return await funcAsync(t);
}
请注意,我不能重载 DoAsync<T,TResult>(Func<T,Task<TResult>> func)
因为它会导致调用不明确。
用户可以通过在调用时指定参数名来解决调用不明确的问题,但我宁愿尽可能不要造成不必要的混淆。
DoAlsoAwaitDelegateAsync
是一个相当笨拙的名字,所以我在这里寻找替代的命名约定。
如果 你必须完全接受一个委托(而不是仅仅将计算值返回给调用者并让他们自己做 function/task 组合)我会只有接受 Func<T,Task<TResult>>
的版本。
让调用者决定他们是否有自己的异步函数,或者只给你一个完全同步执行的函数,然后 returns Task.FromResult()
。而不是(当前)编写您的函数的两个版本,只是 它 是否知道委托 可能 利用一些异步。