Не Делайте Этого В .NET 6, Делайте Вот Так. Начало
В C# 10 появилось много хороших вещей: улучшения производительности, горячая перезагрузка, минимальные API и многое другое. Большинство разговоров идёт про важные функции. А что насчёт более мелких улучшений, который всё же помогают сделать ваш ежедневный опыт разработки более продуктивным? Многие из них могут помочь убрать шаблонный код и ускорить достижение цели.
1. Не разбивайте большие коллекции вручную, используйте новый API LINQ
При работе с большими коллекциями иногда нужно разбивать их на более мелкие порции (страницы). Чаще всего это приводит к серии вызовов методов
Take и Skip, либо к созданию метода расширения, вроде этого популярного ответа со Stack Overflow:static class LinqExtensionsНе делайте так. Вместо этого используйте новый метод
{
public static IEnumerable<IEnumerable<T>> Split<T>(
this IEnumerable<T> list, int parts)
{
int i = 0;
var splits =
from item in list
group item by i++ % parts into part
select part.AsEnumerable();
return splits;
}
}
Chunk:int pageSize = 10;2. Если вам нужна только дата, не используйте DateTime, используйте DateOnly
IEnumerable<Employee[]> employeeChunk = employees.Chunk(pageSize);
Если вам нужно работать с датой и временем в .NET, вы обычно используете
DateTime, TimeSpan или DateTimeOffset. Что, если вам нужно работать только с датами и нужен только год, месяц или день? В .NET 6 вы можете использовать новую структуру DateOnly (также можно использовать TimeOnly). Вот стандартный код, который вы могли использовать раньше:var someDateTime = new DateTime(2021, 11, 09);Не делайте так. Вместо этого используйте структуру
// 09.11.2021 12:00:00 AM
var justTheDate = someDateTime.ToShortDateString();
// "09.11.2021"
DateOnly:var someDateTime = new DateOnly(2021, 11, 09);Вы можете делать множество манипуляций с новыми структурами, вроде расчёта дней между датами, и даже комбинировать их с
// 09.11.2021
DateTime. Также структура предлагает лучшую безопасность типов для дат и более простую сериализацию.3. Не пишите кучу кода для логирования HTTP-запросов, используйте новое промежуточное ПО
До .NET 6 регистрировать HTTP-запросы было не сложно, но немного многословно. Один из способов - создать своё промежуточное ПО, где логировать запрос и передавать его дальше по конвейеру.
Не делайте так. Вместо этого используйте новое промежуточное ПО .NET 6 HTTP Logging:
public void Configure(Логирование можно настроить по вашему усмотрению:
IApplicationBuilder app,
IWebHostEnvironment env)
{
app.UseHttpLogging();
// ...
}
public void ConfigureServices(Надо следить за тем, что вы пишете в лог, и как часто, но всё же это серьёзное упрощение процедуры.
IServiceCollection services)
{
services.AddHttpLogging(log =>
{
log.LoggingFields = HttpLoggingFields.All;
log.RequestHeaders.Add("X-Request-Header");
log.ResponseHeaders.Add("X-Response-Header");
log.RequestBodyLogLimit = 4096;
log.ResponseBodyLogLimit = 4096;
});
}
Окончание следует...
Источник: https://www.daveabrock.com/2021/12/08/do-this-not-that-the-net-6-edition/