Sharp и .NET Лаборатория
97 subscribers
411 photos
7 videos
3 files
316 links
Download Telegram
🔧 Юнит-тестирование в .NET с xUnit и Moq

Если вы хотите научиться писать качественные юнит-тесты в .NET, но устали от скучных примеров, то эта статья — для вас! Автор делится полезными советами по использованию xUnit и Moq для создания тестов, которые легко поддерживать и которые реально помогают находить ошибки.

В статье вы найдёте множество полезных инсайтов:
🛠️ Мудрое использование xUnit — как грамотно применять фреймворк для написания тестов и организации их выполнения, чтобы тесты были не просто рабочими, но и удобными.
🛠️ Мок-объекты с Moq — создаём мок-объекты для изоляции компонентов и упрощения процесса тестирования, что позволит фокусироваться только на проверке нужных частей системы.
🛠️ Лучшие практики — секреты чистого, удобного и эффективного тестирования, которые сэкономят ваше время и помогут избежать типичных ошибок.
🛠️ Избегаем распространённых ошибок — советы, которые избавят вас от множества проблем и облегчат жизнь при работе с юнит-тестами.

📎 Полезный источник
💡 Работаем с фоновыми задачами в Windows

Хотите автоматизировать задачи с помощью .NET Core? Worker Service — это удобный способ создавать фоновые службы, которые легко интегрируются в экосистему Windows.

Как создать такой сервис, настроить его запуск как Windows-службы и управлять им через командную строку?
📎 Простое и понятное объяснение ждёт вас в статье
⚙️ .Net для веб-разработки

В последние годы .NET стал мощным инструментом для создания веб-приложений. Он предлагает кросс-платформенность, высокую производительность, удобные инструменты разработки (Blazor, Razor Pages, Web API) и всё это в экосистеме с хорошей документацией и поддержкой.

Однако вокруг .NET всё ещё ходят споры: кто-то видит в нём идеальный стек для веба, а кто-то считает его нишевым решением

Один из пользователей Reddit поднял интересную тему, сравнивая Node.js и .NET в веб-разработке. Основными аргументами в сравнении были производительность, типизация и использование сторонних библиотек.

А как вы считаете недооценён ли .Net для веб-разработки? Делитесь своим мнением!👇
⚙️ Inline return values в Visual Studio: как новая функция упрощает отладку

Недавнее обновление Visual Studio 2022 (версия 17.12) принесло массу полезных функций, и одна из них — это отображение возвращаемых значений методов прямо в строке кода во время отладки.

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

int CalculateSum(int a, int b) { return a + b; } 
// В отладчике сразу видно: возвращаемое значение = 15.


Преимущества:
Скорость и удобство: мгновенный доступ к возвращаемым значениям без лишних шагов.
Чистота кода: больше не нужно добавлять лишние переменные для промежуточного хранения результата.
Удобство анализа: работает автоматически, что ускоряет процесс отладки.

📎 Подробнее в блоге Visual Studio
Существует мнение, что высшего образования в сфере разработки игр в России нет, но это не так. В этой большой статье я подробно и честно расскажу о своем опыте обучения на разработчика игр в одном из московских университетов.

👉 Статья
Форматирование строк в C#: как сделать красиво

Работаете с выводом данных в C#? Хотите, чтобы ваши строки и логи выглядели аккуратно и профессионально? Тогда вам сто́ит изучить возможности форматирования!

Зачем это нужно:
Вывод чисел с нужной точностью;
Форматирование дат;
Локализация валют и чисел для разных стран;
Более удобный способ работы со строками благодаря интерполяции.

📎 Если вам это интересно, загляните в полезный гайд.
Там подробно рассказывается, как использовать string.Format, интерполяцию и даже управлять региональными настройками.
🔄 Как не превратить кодовую базу в легаси?

Чтобы ваш проект оставался актуальным, нужно подходить к его развитию системно. В статье и видео Грега Янковича подчеркиваются три ключевых подхода:

1️⃣ Выбор технологий. Используйте стабильные и проверенные библиотеки, фреймворки и платформы. Это снижает вероятность больших изменений в будущем.

2️⃣ Работа с зависимостями. Локализуйте их влияние на проект через абстракции и тщательно управляйте их обновлениями.

3️⃣ Постепенные улучшения. Регулярно обновляйте код, делая небольшие улучшения — это легче, чем глобальная переработка.

📺 Видео
📄 Статья
🚀 .NET 9 отказывается от встроенного Swagger

С выходом .NET 9 Microsoft отказалась от интеграции Swagger в шаблоны Web API, что повлекло за собой значительные изменения в создании документации.
Вместо Swagger теперь используется библиотека Microsoft.AspNetCore.OpenApi, которая поддерживает OpenAPI-спецификацию, но без встроенного визуального интерфейса.
Это открывает новые возможности для кастомизации и гибкости, позволяя адаптировать решение под специфические нужды.

Что делать, если нужен UI:
1️⃣ Добавить Swagger вручную;
2️⃣ Использовать NSwag или другие инструменты;
3️⃣ Создать кастомное решение для документации.
🔧 .NET MAUI — будущее кроссплатформенной разработки!

.NET MAUI
(Multi-platform App UI) — это мощный фреймворк для кроссплатформенной разработки, представленный Microsoft как преемник Xamarin.Forms. Он позволяет создавать приложения для Android, iOS, macOS и Windows из единой кодовой базы, предлагая улучшенную производительность, оптимизированный рабочий процесс и расширенные возможности для работы с UI.

Основные преимущества использования .NET MAUI включают:
Единая кодовая база: все приложение пишется один раз и работает на разных платформах, что экономит время и ресурсы по сравнению с созданием отдельных кодов для каждой платформы​
Нативная производительность: .NET MAUI использует нативные элементы управления, что обеспечивает эффективность работы и бесшовный пользовательский опыт с уникальным интерфейсом для каждой платформы​
Повышенная производительность: такие функции, как Hot Reload, позволяют разработчикам видеть изменения в реальном времени, ускоряя процесс прототипирования и итераций​
Бог...
🧩 Может ли строка в C# изменяться?

В статье предлагается решить задачу, в которой нужно изменить строку «Merry Christmas» на «Advent of C#». Это исследование неизменяемости строк в .NET с использованием небезопасного кода и манипуляций с памятью. Также рассматривается элегантное решение через MemoryMarshal. Задача демонстрирует, как работать с внутренними аспектами строк в C#.

📎 Читайте подробности
Тест: 🐍 Насколько ты продвинутый питонист?

Устали от многословных конструкций .NET? Проверьте, насколько быстро вы сможете адаптироваться к питоновской магии кода. Тест — ваш шанс блеснуть универсальностью и гибкостью мышления.

📎 Пройти тест
Вторая часть рассказа про получение высшего образования в сфере разработки видеоигр. Еще больше подробностей о процессе обучения, разработке студенческих проектов, защите дипломных работ и ответе на главный вопрос: «А стоило ли оно того?»

👉 Статья
🐛🔍 Как найти баг в 2088 коммитах с помощью git bisect

Метод git bisect — мощный инструмент для поиска изменения, вызвавшего баг в коде: с его помощью разработчику удалось быстро локализовать проблему, просмотрев всего 11 коммитов вместо изначальных 2088.

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

Исходные данные:
✔️ Ошибка была зарегистрирована 21 октября. Она находится в текущей версии на ветке main.
✔️ Ошибка отсутствует в более ранней версии, которая была выделена в отдельную ветку release-5.7.0.
✔️ Ветку release-5.7.0 создали 2 месяца назад, а с тех пор в ветке main было сделано много изменений — баг может находиться в любом из нескольких тысяч коммитов, которые невозможно быстро просмотреть.

🔗 Читать статью
🔗 Зеркало
🛠 Централизованное управление пакетами в .NET

В .NET есть возможность упростить управление зависимостями NuGet с помощью Central Package Management (CPM). Этот подход позволяет задавать версии пакетов в едином файле Directory.Packages.props, вместо того чтобы дублировать их в каждом проекте.

Основные преимущества CPM:
Централизованное управление версиями пакетов;
Удобство обновления зависимостей;
Снижение вероятности конфликтов.

Эта тема раскрывается в одной из статей, где подробно рассказывается о внедрении CPM и его преимуществах. Особую ценность этот метод представляет для крупных решений с множеством проектов.

Для использования CPM достаточно создать файл Directory.Packages.props в корне решения и указать в нем версии необходимых пакетов. Это заметно упрощает поддержку кода и ускоряет процессы разработки.

📎 Подробности можно найти в статье
Delta Time — незаменимый инструмент в разработке игр на Unity. Он позволяет сделать игру независимой от частоты кадров, но его неправильное использование может сломать весь геймплей. Разберем, когда и как его применять.

👉 Статья
⚡️Самые полезные каналы по C# в одной папке

В ней:
канал для подготовки к собеседованиям
интересные задачи
основной канал (этот)
книги по C#
лучшие вакансии из сферы
и наш чат, в котором можно общаться и задавать вопросы

Добавляйте 👉 тык сюда
🚀 Что такое AOT и почему это важно?

Ahead-of-Time (AOT) компиляция в .NET — это способ превращения приложения в нативный исполняемый файл, который не зависит от JIT (Just-In-Time) компиляции во время выполнения. Это улучшает производительность, уменьшает время запуска и делает приложения более компактными. Однако работа с AOT накладывает ограничения: многие библиотеки используют рефлексию, которая в AOT не работает без дополнительных настроек.

📘 YAML.Net и Native AOT

YAML.Net — популярная библиотека для работы с YAML в .NET, но её стандартный подход к сериализации полагается на рефлексию. В статье Эндрю Лока описывается использование генератора исходного кода YAML.Net, который создаёт оптимизированный код, совместимый с AOT. Это упрощает настройку библиотек и помогает избежать проблем с рефлексией.

Подробнее в статье
Новые возможности для Windows Forms: асинхронные API в .NET 9

Windows Forms получил обновления с поддержкой асинхронных API! В статье из блога разработчиков рассказано о новом подходе к асинхронным операциям в .NET 9 — работающие с долгими операциями методы, теперь доступны с использованием async/await. Это значит, что разработчики смогут избежать блокировки интерфейса, обеспечивая большую отзывчивость приложений.

Основные изменения включают улучшение взаимодействия с задачами и обновлённый подход к обработке долгих операций. Теперь создание современных и удобных приложений с Windows Forms станет проще!

📎 Подробнее в блоге разработчиков
💡 Многопоточность в C#: освежаем основы и работаем быстрее

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

1️⃣ Thread vs Task: Task проще и удобнее для асинхронных задач, но иногда прямое управление потоками через Thread всё ещё необходимо. Помните про правильное завершение работы потоков!

2️⃣ Синхронизация: чтобы избежать гонки данных, используйте lock, Monitor или более сложные механизмы вроде Mutex. А потокобезопасные коллекции из System.Collections.Concurrent помогут сократить бойлерплейт.

3️⃣ UI и фоновые задачи: асинхронные операции — спасение для UI-приложений. Вместо блокировки используйте Task.Run и async/await, чтобы пользовательский интерфейс оставался отзывчивым.

4️⃣ Тюнинг производительности: профилируйте код! Отследите использование пула потоков и минимизируйте затраты на блокировки.

Чтобы подробнее вспомнить детали и углубиться в нюансы, советуем заглянуть в эту статью. Там разбираются полезные примеры и даются советы по улучшен...
🌐 Работа с Amazon SQS в C#: асинхронная обработка сообщений

⚙️ Асинхронная обработка данных играет ключевую роль в построении масштабируемых приложений, особенно если речь идёт о микросервисах. Amazon SQS (Simple Queue Service) — один из самых популярных сервисов AWS для работы с очередями сообщений.

Статья объясняет, как подключиться к SQS, начиная с настройки AWS SDK for .NET. Автор показывает, как создать очередь, отправлять и получать сообщения, а также настроить права доступа для взаимодействия с сервисом.

🛠️ Основное внимание уделено подходам к polling — способам получения сообщений из очереди. Здесь затрагиваются две стратегии: short polling, при котором запросы на получение выполняются немедленно, и long polling, при котором сервер ожидает появления сообщений, чтобы минимизировать задержки и затраты.