Уютное сообщество C# разработчиков
2.52K subscribers
44 photos
53 links
Уютное сообщество C# - обучающий канал для разработчиков.

Полезные материалы по языку программирования.
Тесты на знание C#
Подсказки и трюки языка

@aldrson @viktorreh
加入频道
На пальцах про AAA

Как вы могли понять речь пойдёт не о батарейках или играх. Сегодняшний пост про юнит-тестирование.

Согласитесь, в таком сложном мире как программирование сложно ориентироваться, когда всё лежит где попало, не на своих местах.

Гораздо проще, когда всё структурировано, лежит, так сказать, по полочкам.
Однажды, умные разработчики подумали, и поняли, что и тесты можно структурировать и разложить на конкретные и понятные этапы.

Arrange

В этой секции находится код, ответственный за настройку теста. Создание объектов, подготовка данных, настройка моков и так далее.

Act

Затем идёт действие. То есть, непосредственно вызов тестируемого функционала.

Assert

Финальный этап - проверка. Проверяется всё что требуется проверить. Какие получились данные, состояние объектов, вызвалось ли то что нужно, была ли ошибка. В общем, есть где развернуться.

Вот и получается, что паттерн Arrange-Act-Assert за счёт своей простоты и эффективности в отношении организации и написания тестов стал де-факто стандартом индустрии.

#полезное #tips
👍9
Какое ключевое слово используется для определения асинхронного метода?
Anonymous Quiz
94%
async
4%
await
2%
asynchronous
1%
parallel
😴17👍6🤡32😁2💩1🥴1🗿1
Какой символ используется для комментариев в одной строке?
Anonymous Quiz
96%
//
3%
/*
0%
''
1%
<!--
🤣35🥱19🤡9🥴4👍2🗿1
Do I need to run tests before push?

На текущем проекте мы используем Kafka. Так вышло, что я - MacBook enjoyer и пишу код на m1 машине.

Соответственно, интеграционные тесты, задействующие Kafka тупо не запускаются.
И какое-то время назад у меня в голове возник вопрос: «а должно ли это вообще меня волновать?»

Ладно, Kafka. Но в большом коммерческом проекте есть ещё много других вещей, которые нужно было бы поднимать на своей машине, просто чтобы запустить приложение:

▪️Эмулятор внешних систем (mock интеграций);

▪️Базы данных;

▪️Кэш;

▪️Gateway микросервисов;

И многое другое…

Зачем мне засорять компьютер, когда уже есть облако с окружением, где крутятся пайплайны, триггернутые коммитом? CI/CD - это автоматизация всей вот этой рутины. И я воспользуюсь этим технологическим достижением, чтобы упростить себе жизнь.

Смысл прогонять тесты на машине, если репорт будет читаться из пайплайна в гитлабе?

#полезное #tips
👍41🤣1
Какой оператор используется для фильтрации элементов в LINQ?
Anonymous Quiz
12%
select
74%
where
9%
orderby
5%
groupby
🥴11👍4💩4😁2
Как создать экземпляр класса в C#?
Anonymous Quiz
89%
MyClass obj = new MyClass();
3%
MyClass obj = MyClass();
2%
MyClass obj;
6%
obj = new MyClass();
🥴28🤡9🥱4👎1💩1🗿1
⚡️ Если я слышу, что на C# существует огромное количество сторонних библиотек и не нужно писать своих, я скидываю канал C# Academy.

В канале я научился:

• Создавать высоконагруженные приложения
• Строить правильную архитектуру приложения
• Как обрабатывать сотни тысяч запросов без падения сервисов
• Решать практические задачи с собеседований по С# и .Net
• Узнал огромное количество фич с кодом

Полная маст-хэв папка для С# разработчиков: https://yangx.top/addlist/P5AWf_YPuyBmMjMy

Подписывайся, правильно поданная, структурированная информация, это залог роста – @csharp_ci
👍6🔥31🤯1🤡1
Друзья, какая из рубрик канала вам нравится больше всего?

Вакансии - #вакансия
Статьи -
#полезное
Трюки и возможности языка -
#tips
Тесты -
#тест
Книги -
#книги

Напишите в комментариях, если хотите, чтобы мы что-то добавили - тоже в комменты.
👍11👎1
💡 LINQ Mind Map, обновленная в соответствии с .NET 9 (preview 1 уже доступна) и включающая три новых оператора: Index , CountBy и AggregateBy.

👉 Источник
👍9🔥1
🔼 Spread element в C# 12: простой пример

Идея похожа на ... ( три точки) в JavaScript и используется для объединения коллекций.

💬 Уже пользовались?

#dotnet #csharp #tip by Dave Callan
👍18
💡Модификатор доступа к файлу в C#

Он был представлен в C# 11. Видимость созданного типа ограничена исходным файлом, в котором он объявлен.

Эта фича помогает избегать конфликтов имен при написании генераторов исходного кода.

💬 Как думаете, в каких кейсах его еще можно применить?

#dotnet #csharp #tip by Oleg Kyrylchuk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🍌1
🔥 Руководство по асинхронному программированию в .NET от David Fowler из команды ASP.NET

Асинхронное программирование существует уже несколько лет на .NET, но исторически у разработчиков возникали трудности в его «правильной» реализации.

С момента появления async/await в C# 5 асинхронное программирование стало мейнстримом. Современные фреймворки (например, ASP.NET Core) полностью асинхронны, и очень сложно избежать ключевого слова async при написании веб-сервисов.

В результате возникло много путаницы относительно лучших практик для async и того, как правильно его использовать. David Fowler представил рекомендации с примерами плохих и хороших паттернов написания асинхронного кода.

👉 GitHub
👍8
🤔FluentValidation: прекратите проверять правила при первой ошибке

По умолчанию он проверяет все правила и объединяет сообщения об ошибках. Более эффективно устанавливать CascadeMode либо на уровне класса, либо на уровне цепочки правил, особенно при использовании MustAsync и асинхронных операций.

#dotnet #csharp #tip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👎31
🛠 Пример модульного теста C# с использованием паттерна Builder

💬 Кто использует паттерн Builder для настройки тестовых данных? В каких ситуациях оправданы дополнительные накладные расходы на обслуживание?

#dotnet #csharp #tip by Dave Callan
👍11
Channel name was changed to «Уютное сообщество C# разработчиков»
Head First C#

Автор:
Andrew Stellman
Год издания:
2021

#csharp #en

Скачать книгу
Algorithms and Data Structures for OOP With C#

Автор:
Theophilus Edet
Год издания:
2023

#csharp #en

Скачать книгу
👎2
🍄 Ботаника Мира это ваш гайд по здоровью и энергии без багов и таблеток!

🌿 Природа — это open-source код здоровья!
Травы, грибы и растения — это натуральные "библиотеки", которые могут помочь вашему телу работать как отлаженная система. Нужно только знать, какие "функции" использовать.

💡 Познакомьтесь с каналом "Ботаника Мира"!
Его автор, Ирина, уже 15 лет исследует "природный код", тестирует его на себе и делится только теми "решениями", которые действительно работают.

Подписывайтесь и начните использовать дары природы как эффективный инструмент для улучшения своей жизни:
👉 https://yangx.top/+XmAtGxOtkuQ3MTFi

Код здоровья уже написан природой. Осталось только подключиться!💻🌱
🗿4
Что такое ValueTask в C#?

ValueTask — это структура в .NET, которая используется для представления асинхронной операции. Она является альтернативой Task, но предназначена для более эффективного управления ресурсами в случаях, когда асинхронная операция может завершаться очень быстро, возможно даже синхронно.

Особенности использования ValueTask:

1️⃣Повторное ожидание запрещено: вызывать await несколько раз для одного и того же ValueTask нельзя, так как это может привести к неожиданным результатам.
Так делать нельзя:

ValueTask<int> task = GetValueAsync();
int value1 = await task;
int value2 = await task; // Ошибка


2️⃣Конвертация в Task: если требуется передать ValueTask в API, которое ожидает Task, можно вызвать метод .AsTask():
Task<int> task = GetValueAsync().AsTask();


3️⃣Когда использовать ValueTask:
Операция часто завершается синхронно.
Создание объекта Task может быть слишком накладным.
Вы пишете библиотеку с высокой производительностью.

4️⃣Когда НЕ использовать ValueTask:
Операция всегда асинхронна.
Производительность не является критически важной.
Приложение не оптимизировано под работу с ValueTask.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥21👌1