TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1320 1.55K
День 1071. #NET6
Не Делайте Этого В .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;
IEnumerable<Employee[]> employeeChunk = employees.Chunk(pageSize);

2. Если вам нужна только дата, не используйте DateTime, используйте DateOnly
Если вам нужно работать с датой и временем в .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/
  • 👍 29
More from @netdeveloperdiary
  1. Oct 15, 2026Post #3374
  2. Oct 14, 2026Post #3373
  3. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  4. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  5. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  6. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →