Після того, як C # 5 представила async
та await
модель для асинхронного програмування, спільнота C # придумала конвенцію про іменування, щоб додати суфікс "Async" до методів повернення очікуваного типу, як-от:
interface Foo
{
Task BarAsync();
}
Багато аналізаторів статичного коду (як на основі Росліна, так і не на основі Росліна) були написані, щоб залежати від цього правила іменування при виявленні запаху коду навколо асинхронного програмування.
Тепер, коли C # 8 ввів концепцію асинхронних перелічених даних, які самі по собі не є очікуваними, але можуть використовуватися спільно з await foreach
, мабуть, існує два варіанти повернення методів іменування IAsyncEnumerable
:
interface Foo
{
// No "Async" suffix, indicating that the return value is not awaitable.
IAsyncEnumerable<T> Bar<T>();
}
або
interface Foo
{
// With "Async" suffix, indicating that the overall logic is asynchronous.
IAsyncEnumerable<T> BarAsync<T>();
}
Чи існував остаточний настанов щодо конвенції про іменування (від мовної команди C #, фонду .NET Foundation чи інших органів) стосовно вищезазначених варіантів, як, наприклад, як конвенція про іменування C # 5 була однозначно стандартизована та не залишалася на судженнях програмістів на основі думки?
Async
суфікс для методів, що повертаються IAsyncEnumerable
, наприклад, ChannelReader.ReadAllAsync . В інших випадках, наприклад, в EF Core, AsAsyncEnumerable()
використовується вже зрозуміло
async
і використовуєтьсяawait
всередині), а зразок