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

Автор: @energy_it

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

Реклама на бирже: https://telega.in/c/csharp_ready
Download Telegram
👩‍💻 Регулярки без магии и боли!

В этой шпаргалке — базовые приёмы работы с Regex: как быстро проверять строки на соответствие шаблону, вытаскивать нужные куски, массово очищать и разбивать текст, а ещё безопасно экранировать пользовательский ввод

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥148👍6🤝3
👍86🔥4
Что же выведет консоль?
Anonymous Quiz
33%
A
31%
B
13%
C
23%
D
🔥9👍6😁31
📱 Корутины: сценарии времени без хаоса!

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

Коротко о корутинах:

Помогают вынести ожидания и задержки из игрового цикла;

Делают последовательные события читаемыми, как сценарий или раскадровка;

Упрощают отладку странных зависаний, редких триггеров и переходов.


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

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1511👍6🤝4😁1
😁408🔥5👍1
Тестируем время с TimeProvider в .NET 8 без DateTime.UtcNow!

Когда код зависит от текущего времени (срок жизни токена, таймаут, ретраи) и везде стоит DateTime.UtcNow, такие вещи сложно тестировать.
В .NET 8 можно передавать время через TimeProvider — и сразу становится проще.

Сервис, который решает «просрочен токен или нет», принимает TimeProvider:
using System;

public class TokenService
{
private readonly TimeProvider _timeProvider;

public TokenService(TimeProvider timeProvider)
{
_timeProvider = timeProvider;
}

public bool IsExpired(DateTimeOffset expiresAtUtc)
{
var now = _timeProvider.GetUtcNow();
return now >= expiresAtUtc;
}
}


В тестах просто подменяем время на фейковое:
using System;
using Microsoft.Extensions.Time.Testing;

// "Замороженное" время
var fakeTime = new FakeTimeProvider(DateTimeOffset.UtcNow);
var service = new TokenService(fakeTime);

var expiresAt = fakeTime.GetUtcNow().AddMinutes(1);
Console.WriteLine(service.IsExpired(expiresAt)); // false

// Прокручиваем время вперёд
fakeTime.Advance(TimeSpan.FromMinutes(2));
Console.WriteLine(service.IsExpired(expiresAt)); // true


🔥 Главное — не дергайте DateTime.UtcNow напрямую. Пробрасывайте в код TimeProvider:
в приложении — TimeProvider.System, в тестах — FakeTimeProvider.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍118🔥4
👩‍💻 Форматируем секунды в понятный текст!

Берём одно число в секундах и превращаем его в живое описание:
«1 день 3 часа 25 минут 4 секунды» — сразу понятно, сколько времени прошло или осталось.

В этой задаче:

Разложишь общее количество секунд на дни, часы, минуты и секунды простыми делениями;

Напишешь функцию, которая подбирает правильные окончания слов по правилам русского языка;

Соберёшь аккуратную строку, пропуская нулевые части и красиво выводя результат в консоль.


Из такого форматирования вырастают удобные логи, таймеры и отчёты, где за сухими секундами уже видно реальное время.

➡️ C# Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥149🤝8👍2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Если вы хотите прокачать навыки в C# и .NET, загляните на отличный ресурс — Code Maze!

Это современный сайт с обширной базой знаний по backend-разработке на ASP,NET Core, архитектуре приложений, шаблонам проектирования и лучшим практикам написания кода.

На Code Maze вы найдёте подробные гайды, пошаговые туториалы и примеры из реальных проектов. Материалы подойдут как для уверенных новичков, так и для опытных разработчиков.

📌 Оставляю ссылочку: code-maze.com

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍7🔥4
👩‍💻 Почему интерфейсы делают код свободнее?

Когда логика начинает зависеть от конкретных классов, проект постепенно «деревенеет»: любое изменение тянет за собой цепочку правок, и система теряет гибкость для роста.

В этом гайде:

Поймём, как отделить намерение от реализации в поведении кода;

Увидим, почему подмена частей становится проще и безопаснее;

Разберём, как интерфейсы помогают тестировать модули без хаоса.


Думая в терминах контрактов — код становится гибче, чище и легче расширяется

➡️ C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1811🤝10👍7😁1