C# Portal | Программирование – Telegram
C# Portal | Программирование
14.9K subscribers
974 photos
118 videos
24 files
815 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для C#-разработчика

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
Нашел для вас отличный репозиторий — Unity Clean Code

Это сборка лучших практик написания чистого кода в Unity, которые помогут сделать ваш проект структурированным и удобочитаемым.

Следуя рекомендациям, вы улучшаете архитектуру своих игр, упрощаете поддержку кода и учитесь писать более эффективные и понятные решения.

💬 Отличный выбор для всех, кто работает с Unity

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍51💯1
💡 В .NET 8 появился новый интерфейс IExceptionHandler, который упрощает глобальную обработку исключений в aspnetcore.

Раньше обработчики исключений часто становились сложными и запутанными, так как в одном методе приходилось учитывать множество разных типов ошибок. Теперь же IExceptionHandler позволяет создавать отдельные обработчики для конкретных исключений, делая код чище и удобнее.

Достаточно реализовать метод TryHandleAsync, подключить его через UseExceptionHandler — и всё готово.

Это чисто. Модульно. Поддерживаемо. И, честно говоря, давно пора.

Подробно читай в статье: тык

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4🌭2
Copilot, дружище, твои знания по C# отстают на год, а может и два 😄

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39👍4🌭3
Как создать HttpClient в .NET?

Рекомендуемый способ — использование IHttpClientFactory

Вы можете использовать IHttpClientFactory напрямую.

Недостаток в том, что вам придется настраивать HttpClient каждый раз.

Если вам нужен заранее настроенный HttpClient, вы можете использовать именованные или типизированные клиенты.

Вот правильный способ работы с HttpClient в .NET: тык

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4💯32
Есть такой инструмент — SharpRedirect

С ним можно легко перехватывать и перенаправлять сетевой трафик

Он принимает входящие TCP-подключения на локальный порт и пересылает их на указанный удалённый хост и порт.

😍 Поддерживает двустороннюю передачу данных в полном дуплексе, обеспечивая стабильную и асинхронную работу для повышения производительности.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍41
А что скажут разработчики F#?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣36😁2👨‍💻2
3 различных архитектурных подхода к организации компонентов в приложении

1. Классическая трёхслойная архитектура

Включает три уровня:

🟡MyApp.Web (контроллеры, взаимодействие с пользователем)

🟡MyApp.Business (бизнес-логика)

🟡MyApp.Data (доступ к данным)

PoliciesController использует IPolicyService, который, в свою очередь, использует IPolicyRepository для работы с базой данных.

Классическая, но может приводить к сильной связанности.

2. CQRS-подход

🟡Использует паттерн Command Query Responsibility Segregation (CQRS)

🟡PoliciesController вызывает RenewPolicyCommand, который обрабатывается RenewPolicyHandler

🟡RenewPolicyHandler взаимодействует с IPolicyRepository, который работает с PolicyRepository

Улучшает разделение команд и запросов, подходит для сложных систем.

3. Компонентный подход

🟡Компоненты объединены в единый модуль MyApp.Policies.

🟡PoliciesController использует IPolicyComponent, который включает в себя PolicyComponent, PolicyService и PolicyRepository

Даёт больше гибкости, но требует продуманной структуры

Как вы упаковываете свои компоненты? 🤔

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🌚2
Это правильный способ реализации посева данных в ваших .NET-приложениях

EF Core 9 значительно упростил этот процесс.

Больше не нужно переопределять OnModelCreating или вручную управлять скриптами заполнения данных.

EF 9 представил методы UseSeeding и UseAsyncSeeding, которые предоставляют удобный способ заполнения базы данных начальными данными.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6🌚1💯1
Media is too big
VIEW IN TELEGRAM
Claude 3.7 Sonnet получил серьёзного конкурента

Gemini 2.5 Pro — действительно хорошая модель для кода 👍

качество кода действительно высокое
контекст 1M токенов
нативная мультимодальность
генерация длинного кода
понимание крупных кодовых баз

Чувак на видео использовал его вместе с Windsurf для создания приложения поискового агента с ИИ

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥76👍2🥴2
Вы устали писать один и тот же шаблон конструктора в каждом сервисе?

Объявить поле → Внедрить зависимость → Присвоить → Повторить 🔁

Здесь на помощь приходят первичные конструкторы в C# 12 — и они значительно упрощают код.

Я использовал их в статических сервисах и вот что заметил:

Плюсы:

Меньше шаблонного кода, больше ясности
Нет лишних полей и присваиваний
Отлично подходят для Minimal API и DI
Держат небольшие сервисы лаконичными и читаемыми

Минусы:

Невозможность объявлять private readonly поля

Вы уже пробовали первичные конструкторы в реальных проектах?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍8🐳3💯1
Ах да, этот бесценный "специалист по методам расширения" — что бы мы без тебя делали) 😄

(их сотни в этом проекте)

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🌚5🔥2🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
Я никогда не знал об этом! Вы можете открыть VS Code прямо в браузере из репозитория на GitHub.

Просто нажмите клавишу "." (точка)" в репозитории на GitHub. Это откроет репозиторий в веб-версии VS Code. Можно редактировать и коммитить изменения одним кликом.

Это работает даже если вы не владеете репозиторием! 😱

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥41👏1
Media is too big
VIEW IN TELEGRAM
Если нужно подготовиться к тех. интервью

То держи этот сайт с онлайн-тестами и вопросами

Подойдет для всех, кто работает с HTML, JavaScript, C#, Java, PHP, ASP,Net и другими ЯП.

ссылка

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥41
Тип OrderedDictionary существует в .NET с ранних версий

.NET 9 представляет его обобщенный аналог

Он создает словарь, в котором сохраняется порядок пар «ключ-значение».

Ты когда-нибудь использовал OrderedDictionary? 🤔

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥1
Как управлять задержкой в методе Task.Delay в тестах?

Начиная с .NET 8, вы можете передать объект TimeProvider в метод Task.Delay

TimeProvider будет интерпретировать задержку.

Вы можете использовать FakeTimeProvider, чтобы управлять задержкой в тестах.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥1
AutoMapper и MediatR переходят на коммерческую модель 😡

То есть, проекты больше не будут полностью open source. Джимми пишет, что делает это, чтобы обеспечить долгосрочную устойчивость своих OSS-проектов. Ну и сразу уточняет: «нет, это не первоапрельская шутка».

Короче, ещё один популярный open source — в платку. Тренд последних лет продолжается.

Вот источник

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯11👍10🥴21👀1
Этот дашборд для отслеживания цен на акции с использованием Cursor + .NET. 🔥

Использовав вайб-кодинг до того, как это стало модным )

Бэкенд получает начальную цену акции с бесплатного API фондового рынка.

Затем есть фоновая задача, которая случайным образом генерирует обновление цены и передает его клиентам с помощью SignalR.

UI — это чистый HTML + JavaScript + Tailwind CSS для стилизации

Потребовалось около ~15 секунд, чтобы добавить поддержку темного режима. 😱

Я с нетерпением жду, как будет развиваться Cursor. Это однозначно самый простой способ быстро создать работающее ПО.

Но поддерживаемость — это то, о чем нужно позаботиться.

В целом, код не плохой. Он работает и читаем. Cursor может даже писать комментарии и рефакторить код.

Я получил лучшие результаты, используя Claude Sonnet 3.5.

А ты уже пробовал Cursor?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2👌1
"EF Core медленный."

Нет. EF Core, вероятно, лучший фреймворк для доступа к базе данных среди всех языков прямо сейчас.

Но он не исправит плохой код или ваши плохие запросы.

Недавно я разбирал один проект, где тестировщики и разработчики жаловались:
"Наш .NET API тормозит в продакшене. Мы думаем, что EF Core — узкое место."

Я взглянул на код. Вот что я нашёл:

var users = await _context.Users.ToListAsync();


Это использовалось внутри пагинированной конечной точки. Без фильтров. Без Skip(). без Take()
И что ещё хуже — я видел это внутри циклов. API загружал 100 000+ записей на каждый запрос.

Конечно, оно было медленным.

EF Core — мощный инструмент, но он не защищает вас от типичных ошибок. А я их вижу постоянно:

Ранний вызов ToList(), ломающий композицию запроса
Отсутствие AsNoTracking() в сценариях с преобладанием чтения
Ленивые загрузки в циклах, вызывающие проблему N+1
Использование Include() повсюду, даже когда в этом нет нужды
Отсутствие проекции только нужных столбцов через Select()
Регистрация DbContext как Singleton (так делать нельзя)
Отсутствие индексов в базе данных
и тд.

EF Core даёт гибкость, производительность и тесную интеграцию с .NET.

Но он предполагает, что вы знаете, что делаете.

Если ваши запросы EF Core медленные — проблема, скорее всего, в вас.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
💯37🔥108👍3🥴1
Иногда записи архитектурных решений просто огонь 😗

Примечание: AccountState находится в отношении 1:1 с SubnoscriptionState, поэтому оба используют один и тот же SubnoscriptionId в качестве первичного идентификатора.

Слушай, мы могли бы сделать их разными ради "чистого кода" или DDD-мусора, но эти две сущности связаны между собой, и Account будет генерировать события для Subnoscription — так эта штука работает в реальной жизни.

Так что, вместо того чтобы делать всё запутанным или добавлять лишние шаги только потому, что какой-то блогер сказал нам так делать, мы сделали эту связь очевидной и простой для понимания, особенно если ты уже знаешь, с каким SubnoscriptionId работаешь.


👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10👍4🔥3💯1
Как с помощью .NET 8 грамотно настроить ролевую авторизацию в многоуровневых приложениях

Всё это — с примерами кода и лучшими практиками, чтобы приложение было и безопасным, и масштабируемым.

Читать тут

👉 @KodBlog | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥1
Устали листать запутанный и огромный файл Program.cs?

Вот как сделать его чище и читабельнее

Одно из первых, что мы делаем при создании приложения — это настройка:

Логирования
Базы данных и ORM
CORS
Аутентификации
DI-сервисов
Привязок для API

И всё это сваливается в Program.cs — и быстро превращается в кашу.

Вот тут и приходит на помощь паттерн расширения ServiceCollection

Он помогает организовать конфигурации сервисов в модульные, читабельные и тестируемые куски.
Больше никаких гигантских цепочек методов или запутанных блоков кода настройки.

Читай целый выпуск на эту тему с примерами

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥4