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

问题描述 投票:0回答:1

我正在开发一个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是一个非常笨拙的名字,所以我在这里寻找替代的命名约定。

c# asynchronous async-await naming-conventions naming
1个回答
2
投票

如果你必须接受一个委托(而不是只是将计算值返回给调用者并让他们自己执行函数/任务组合),我只会接受一个接受Func<T,Task<TResult>>的版本。

将它留给调用者,无论他们是否拥有自己的异步函数,或者只是给你一个完全同步执行的函数,然后返回Task.FromResult()。而不是(当前)编写函数的两个版本,只是它知道委托是否可以利用某些异步。

© www.soinside.com 2019 - 2024. All rights reserved.