Простой, хоть и не самый распространённый способ упростить условия
—> используйте сопоставление с образцом по свойствам
Сопоставление с образцом по свойствам в C# — это мощный инструмент, который помогает упростить код и сделать его более понятным
👍 — база
🔥 — всё верно
👉 @KodBlog
if—> используйте сопоставление с образцом по свойствам
Сопоставление с образцом по свойствам в C# — это мощный инструмент, который помогает упростить код и сделать его более понятным
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥23🤯5❤3
Хочешь стать крутым разработчиком?
Разберись с конечными автоматами.
Вот определение для тех, кто любит точность:
А если по-простому:
> Есть текущее состояние
> Происходит какое-то событие или действие
> Переход в новое состояние
Мы задаём все возможные состояния, переходы между ними и что эти переходы запускает
А дальше можно реализовать это как Saga — способ управления бизнес-логикой, которая тянется во времени
MassTransit предлагает одну из самых удобных реализаций
⏩ Вот как можно начать: read
👉 @KodBlog
Разберись с конечными автоматами.
Вот определение для тех, кто любит точность:
"Конечный автомат — это математическая модель, которая используется для проектирования алгоритмов. Он получает входные данные и в зависимости от них переходит в другое состояние."
А если по-простому:
> Есть текущее состояние
> Происходит какое-то событие или действие
> Переход в новое состояние
Мы задаём все возможные состояния, переходы между ними и что эти переходы запускает
А дальше можно реализовать это как Saga — способ управления бизнес-логикой, которая тянется во времени
MassTransit предлагает одну из самых удобных реализаций
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2😁2🤔1
Хочешь разрабатывать приложения в Azure? Запомни эти 3 типа облаков
> IAAS – Ты управляешь приложениями и данными, провайдер отвечает за «железо» и сеть.
> PAAS – Провайдер берёт на себя инфраструктуру и ОС, ты просто пишешь код.
> SAAS – Готовые приложения; минимум гибкости, максимум удобства
👉 @KodBlog
> IAAS – Ты управляешь приложениями и данными, провайдер отвечает за «железо» и сеть.
> PAAS – Провайдер берёт на себя инфраструктуру и ОС, ты просто пишешь код.
> SAAS – Готовые приложения; минимум гибкости, максимум удобства
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Один простой хак для продуктивности умных C#-разработчиков
Создавай сразу несколько классов в Visual Studio
Как это сделать?
В окне «Добавить новый элемент» просто введи несколько названий классов, разделяя их запятыми
P.S. Смотри видео выше, как это работает
👉 @KodBlog
Создавай сразу несколько классов в Visual Studio
Как это сделать?
В окне «Добавить новый элемент» просто введи несколько названий классов, разделяя их запятыми
P.S. Смотри видео выше, как это работает
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47❤3
Многие неправильно понимают Clean Architecture
Я вижу одну и ту же ошибку снова и снова
Разработчики узнают про Clean Architecture, вдохновляются её идеями —
и сразу начинают лепить структуру проекта по знаменитой диаграмме
Но фишка вот в чём > Clean Architecture — это не про папки. Это про зависимости.
Саймон Браун даже написал «пропущенную главу» к книге дяди Боба, где как раз поднимает эту тему.
Но по какой-то причине главный смысл все равно теряется
✅ Можно использовать Clean Architecture и без слоёв
✅ Главное — правильно направлять зависимости
Вот два способа, как реально лучше структурировать приложение на Clean Architecture: читать
👉 @KodBlog
Я вижу одну и ту же ошибку снова и снова
Разработчики узнают про Clean Architecture, вдохновляются её идеями —
и сразу начинают лепить структуру проекта по знаменитой диаграмме
Но фишка вот в чём > Clean Architecture — это не про папки. Это про зависимости.
Саймон Браун даже написал «пропущенную главу» к книге дяди Боба, где как раз поднимает эту тему.
Но по какой-то причине главный смысл все равно теряется
Вот два способа, как реально лучше структурировать приложение на Clean Architecture: читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2
Пример SQL-запроса, который генерирует Entity Framework для вставки в SQL Server
Обрати внимание на использование оператора
Такой подход выбран из соображений производительности👍
👉 @KodBlog
Обрати внимание на использование оператора
MERGE, который изначально предназначался для объединения двух таблицТакой подход выбран из соображений производительности
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥1
5 фич EF Core, которые тебе точно пригодятся
Разделение запросов (Query Splitting)
— Делит JOIN-запросы на несколько отдельных
— Может ускорить выполнение, особенно при сложных связях
Массовое обновление (Bulk Updates)
— Использует ExecuteUpdate для изменения множества сущностей
— Обновление идёт сразу в базу, мимо Unit of Work
Сырые SQL-запросы (Raw SQL)
— Подгружай сущности напрямую через SQL
— Полный контроль над запросом, можно юзать фичи SQL
Массовое удаление (Bulk Deletes)
— Через ExecuteDelete удаляешь пачку записей
— Тоже обходит Unit of Work и идёт сразу в базу
Игнорирование фильтров запросов (Ignore Query Filters)
— Фильтры позволяют скрывать строки по умолчанию
— Иногда нужно отключить, например, для админки
🧠 Бонус: ещё 5 фич EF Core тут
👉 @KodBlog
Разделение запросов (Query Splitting)
— Делит JOIN-запросы на несколько отдельных
— Может ускорить выполнение, особенно при сложных связях
Массовое обновление (Bulk Updates)
— Использует ExecuteUpdate для изменения множества сущностей
— Обновление идёт сразу в базу, мимо Unit of Work
Сырые SQL-запросы (Raw SQL)
— Подгружай сущности напрямую через SQL
— Полный контроль над запросом, можно юзать фичи SQL
Массовое удаление (Bulk Deletes)
— Через ExecuteDelete удаляешь пачку записей
— Тоже обходит Unit of Work и идёт сразу в базу
Игнорирование фильтров запросов (Ignore Query Filters)
— Фильтры позволяют скрывать строки по умолчанию
— Иногда нужно отключить, например, для админки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤1
Фишка в Visual Studio для C# разработчиков — быстрое превращение JSON в классы, без онлайн-сервисов:
Просто скопируй JSON, зайди в Edit → Paste Special → Paste JSON as Classes — и Visual Studio сама сгенерит нужные классы.
Удобно и мгновенно❤️
👉 @KodBlog
Просто скопируй JSON, зайди в Edit → Paste Special → Paste JSON as Classes — и Visual Studio сама сгенерит нужные классы.
Удобно и мгновенно
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥48👍11❤2
Rider 2025.1 получил несколько улучшений для работы с системой контроля версий
Теперь в представлении diff сразу отображаются детали коммита, а при обновлении удалённых репозиториев Git изменения подтягиваются автоматически
🔄 Держите свои репы в актуальном состоянии без лишних усилий
Дополнительные сведения о контроле версий можно найти — здесь
👉 @KodBlog
Теперь в представлении diff сразу отображаются детали коммита, а при обновлении удалённых репозиториев Git изменения подтягиваются автоматически
Дополнительные сведения о контроле версий можно найти — здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🥴1
В превью C# 14 теперь можно передавать непараметризированный универсальный тип в
Например,
Раньше можно было передавать только закрытые универсальные типы, такие как
💖
👉 @KodBlog
nameofНапример,
nameof(List<>) вернёт ListРаньше можно было передавать только закрытые универсальные типы, такие как
List<int>, чтобы получить ListPlease open Telegram to view this post
VIEW IN TELEGRAM
👍17😐7
Вот как завалить юнит-тестирование в C#
Пиши раздутые методы тестов. Если у теста такая структура:
→ Arrange 1
→ Act 1
→ Assert 1
→ Act 2
→ Assert 2
...
— он уже слишком большой. Такой тест проверяет сразу несколько сценариев, и если он упадёт — ты потратишь часы, разбираясь, почему.
Вместо этого пиши тесты по простой структуре:
→ Arrange
→ Act
→ Assert
Так ты сразу понимаешь, какой сценарий покрыт
Ты не Шекспир. Хватит писать тесты с множеством "действий".😇
👉 @KodBlog
Пиши раздутые методы тестов. Если у теста такая структура:
→ Arrange 1
→ Act 1
→ Assert 1
→ Act 2
→ Assert 2
...
— он уже слишком большой. Такой тест проверяет сразу несколько сценариев, и если он упадёт — ты потратишь часы, разбираясь, почему.
Вместо этого пиши тесты по простой структуре:
→ Arrange
→ Act
→ Assert
Так ты сразу понимаешь, какой сценарий покрыт
Ты не Шекспир. Хватит писать тесты с множеством "действий".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤨4❤1
В C# 14 (preview) допускается использование оператора условного доступа
Ранее нужно было проверять, не равен ли
В C# 14 метод
👉 @KodBlog
?. слева от присваивания.Ранее нужно было проверять, не равен ли
customer значению null перед присваиванием заказаВ C# 14 метод
GetCurrentOrder не вызывается, если customer равен nullPlease open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Одна из многих функций ReSharper, которые мне нравятся — это постфиксные шаблоны.
>
>
>
В версии 2025.1 появился новый шаблон —💖
👉 @KodBlog
>
logger.inject → вставит зависимость в конструктор>
Process().await → обернёт вызов в await>
someValue.return → добавит return someValue;В версии 2025.1 появился новый шаблон —
.inject. Теперь внедрять зависимости стало ещё быстрее Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥴4❤2
Вот 7 популярных репозиториев по архитектуре ПО (для .NET-разработчиков):
1. Эволюционная архитектура на примерах -> тык
2. Модульный монолит с DDD (предметно-ориентированным проектированием) -> тык
3. Стартер-кит на .NET 8 с поддержкой мультиарендности -> тык
4. Пример eCommerce-приложения на микросервисах в .NET -> тык
5. Пример архитектуры вертикальных срезов (Vertical Slice) -> тык
6. Шаблон .NET-приложения с чистой архитектурой -> тык
7. Пример приложения с гексагональной архитектурой -> тык
💖 — круто
👍 — сохранил
👉 @KodBlog
1. Эволюционная архитектура на примерах -> тык
2. Модульный монолит с DDD (предметно-ориентированным проектированием) -> тык
3. Стартер-кит на .NET 8 с поддержкой мультиарендности -> тык
4. Пример eCommerce-приложения на микросервисах в .NET -> тык
5. Пример архитектуры вертикальных срезов (Vertical Slice) -> тык
6. Шаблон .NET-приложения с чистой архитектурой -> тык
7. Пример приложения с гексагональной архитектурой -> тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥7❤2🐳1
Трассировка .NET-приложений с OpenTelemetry
Вы можете экспортировать телеметрию в Grafana, Seq, App Insights и другие.
Вот несколько библиотек OpenTelemetry для добавления в приложение:
> HttpClient
> AspNetCore
> EF Core
> Redis (StackExchange)
> PostgreSQL (Npgsql)
При запуске приложения вы сразу увидите трассировки от этих библиотек
OpenTelemetry позволяет глубже понять, как работает ваше приложение
Подробнее тут❤️
👉 @KodBlog
Вы можете экспортировать телеметрию в Grafana, Seq, App Insights и другие.
Вот несколько библиотек OpenTelemetry для добавления в приложение:
> HttpClient
> AspNetCore
> EF Core
> Redis (StackExchange)
> PostgreSQL (Npgsql)
При запуске приложения вы сразу увидите трассировки от этих библиотек
OpenTelemetry позволяет глубже понять, как работает ваше приложение
Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
В .NET 10 завозят
Наконец-то можно будет перемешивать
Зачем это нужно?
— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.
Микро-удобство, но то, что надо💯
> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221
❤️ — ждем
👉 @KodBlog
Shuffle() для LINQНаконец-то можно будет перемешивать
IEnumerable<T> без OrderBy(_ => Guid.NewGuid()) и кастомных костылей.Зачем это нужно?
— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.
Микро-удобство, но то, что надо
> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥5❤2
Используй
Избегай
Почему?
> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности
🤍
👉 @KodBlog
Span<T> для высокопроизводительного среза массивов без выделения памяти.Избегай
ToList(), если он не нужен Почему?
> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤3