C# Ready | Unity
10.1K subscribers
1.2K photos
62 videos
550 links
Авторский канал по разработке на C# и Unity.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3SBaT3

Реклама на бирже: https://telega.in/c/csharp_ready
Download Telegram
22🔥13👍6😁3
Как убрать «лес» вложенных `if` из метода?

Часто вся валидация и проверки прав зашиваются внутрь одной большой конструкции, и тело метода уезжает вправо на пол-экрана:
void ProcessOrder(Order order)
{
if (order != null)
{
if (order.IsPaid)
{
if (!order.IsCancelled)
{
Ship(order);
}
}
}
}


С guard-условиями (ранними выходами) проверки поднимаем в начало, а дальше оставляем только «нормальный путь»:
void ProcessOrder(Order order)
{
if (order is null) return;
if (!order.IsPaid) return;
if (order.IsCancelled) return;

Ship(order);
}


Метод читается сверху вниз как список требований, а основная логика не утопает во вложениях. Такой подход хорошо заходит для валидаций, проверок прав, preconditions в сервисах и хендлерах.

🔥 Меньше вложенности, легче читать диффы и гораздо проще добавлять новые условия.

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
33🔥8🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Andrew Lock — .NET Escapades — блог и персональный сайт для .NET-разработчиков!

Технический блог от опытного .NET разработчика и Microsoft MVP, где автор делится глубокими практическими заметками, гайдами и идеями по современному разработку с ASP.NET Core, C#, .NET Core/NET 10 и связанным инструментам.

📌 Оставляю ссылочку: andrewlock.net

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114👍4
👩‍💻 PDF-счёт за секунды без рутины

QuestPDF создаёт аккуратный счёт из ваших данных, избавляя команду от редакторов и копипаста ручного труда.

Что важно знать

Меняет стиль легко

Работает на любом компьютере

Создаёт файл мгновенно


Подключите пакет, скопируйте шаблон и уже сегодня отправляйте клиентам профессиональные, читаемые счета в PDF формате.

➡️ C# Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
14🤝11👍4🔥2
await using — асинхронно освобождаем ресурсы без лишних try/finally!

Часто мы открываем файлы или сетевые стримы асинхронно, но… освобождаем синхронно, блокируя поток. В .NET есть решение: интерфейс IAsyncDisposable и ключевое слово await using — всё по-современному и без ручного DisposeAsync().

Старая реализация закрывает поток синхронно, заставляя поток ожидать завершения операции, и нагружает планировщик лишними блокировками:
// Было — синхронный Dispose
async Task<long> Old(string p)
{
var s = new FileStream(p, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true);
try { return s.Length; }
finally { s.Dispose(); } // блокирует поток
}


Новая версия использует await using, освобождая ресурсы асинхронно без блокировок и шаблонного кода при завершении:
// Стало — await using + DisposeAsync
async Task<long> New(string p)
{
await using var s = new FileStream(p, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true);
return s.Length; // всё асинхронно и лаконично
}


🔥 await using автоматически вызывает DisposeAsync() без блокировок и лишнего кода — особенно важно в высоконагруженных сервисах и UI-приложениях.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥9👍5
👍53🔥3
Что же выведет консоль?
Anonymous Quiz
19%
A
51%
B
7%
C
23%
D
10🔥4👍3
Почему using и await using дают разный результат?

На вид разница только в одном слове. Но поведение разное.

using вызывает синхронный Dispose. await using вызывает DisposeAsync и ждет его завершения. Если у ресурса есть реальная асинхронная очистка, например сетевой flush или закрытие канала, это критично.

Если случайно оставить обычный using, код может выглядеть корректно, но фактическое освобождение пройдет не так, как ты ожидаешь.
await using var conn = new SqlConnection(cs);
await conn.OpenAsync();


🔥 Для IAsyncDisposable используй await using, чтобы очистка завершалась предсказуемо.

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥43
📂 Напоминалка по HTTP vs HTTPS!

Например, HTTP передаёт данные в открытом виде, без шифрования. HTTPS работает поверх TLS и защищает соединение: выполняется проверка сертификата, обмен ключами и дальнейшая передача данных в зашифрованном виде.

На картинке — ключевые этапы установления соединения.

Сохрани, чтобы не забыть!

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍7🔥6
📱 LateUpdate: камера без дрожания в движении!

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

В этом гайде:

Показываем, почему появляется дрожание при разных циклах обновления;

Переносим камеру в LateUpdate, чтобы она читала финальную позицию цели;

Добавляем SmoothDamp и Interpolate для мягкого и стабильного слежения.


Настрой этот пайплайн один раз, и камера сразу станет заметно спокойнее в геймплее.

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍76🤝5👎1
25🔥11👍2