具有异步委托的异步函数的命名约定

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()。而不是(当前)编写您的函数的两个版本,只是 是否知道委托 可能 利用一些异步。