tgindex

Библиотека шарписта | C#, F#, .NET, ASP.NET

описание

Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

21 725
подписчиков
Охват к подписчикам
12,9%
ERR
Реакции к просмотрам
0,67%
1 187 на 49 постов
Пересылки к просмотрам
1,01%
1 782
Постов в день
1,0
всего 302

Где отзываются чаще

доля реакций к просмотрам
  • 31 июл.Какая концепция C# позволяет объекту принимать различные формы и, следовательно, отображать соответствующее поведение? 👾 — Полиморфизм 👍 — Инкапусляция 🥰 — Абстракция ⚡️ — Ничего из вышеперечисленного Библиотека задач по C#4,34%
  • 7 авг.🔥 Где должна жить бизнес-логика: в хранимых процедурах или в коде приложения? Спор, который не утихает много лет. Сторонники хранимых процедур говорят: данные уже в базе, меньше сетевых запросов, выше производительность и больше контроля над SQL. Сторонники логики в приложении отвечают: код проще тестировать, ревьюить, версионировать в Git и переносить между разными СУБД. На практике многие выбирают компромисс: сложные операции над большими объёмами данных оставляют в базе, а бизнес-правила и оркестрацию — в приложении. 💬 А как устроено у вас? 👍 — максимум логики в приложении. 🔥 — сложную логику лучше держать в базе. И был ли у вас проект, где сотни хранимых процедур со временем превратились в «чёрный ящик», который никто не хотел менять? 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #entry_point2,91%
  • 3 сент. 2025 г.🐸Библиотека шарписта #развлекалово2,12%
  • 12 авг.😬 Microsoft показала ещё один кусочек будущего .NET Вышел .NET 11 Preview 7. Апдейт затронул почти весь стек: C#, Runtime, SDK, ASP.NET Core, EF Core, MAUI, F# и Windows Forms. Главное изменение это перевод NativeAOT в режим по умолчанию в CLI ради заметно более быстрого старта приложений. Из языка подъехали фичи C# 15, среди них паттерны union и помеченные break и continue для управления вложенными циклами. В библиотеки добавили десятичные типы по стандарту IEEE 754 и шифрование паролем для ZIP. Стабильный .NET 11 ожидается в ноябре, а пока Preview 7 можно использовать как полигон: проверить свои проекты на новом SDK и заранее найти проблемы с совместимостью. 👍 — тестирую превью 🔥 — до релиза даже не трогаю 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #async_news2,09%
  • 13 авг.🔖 Помеченные break и continue в C# 15. Выход из вложенных циклов без костылей Знакомая боль. Есть вложенные циклы, и из внутреннего нужно прервать или продолжить внешний. Обычный break выходит только из ближайшего цикла, поэтому приходилось заводить булев флаг и проверять его на каждом уровне, либо прыгать через goto. И то и другое замусоривает логику. В C# 15 у циклов появились метки, а break и continue научились указывать, какой именно цикл они имеют в виду. Метка ставится прямо на нужный цикл. outer: for (int row = 0; row < grid.Height; row++) { for (int col = 0; col < grid.Width; col++) { if (grid[row, col].IsBlocked) continue outer; if (grid[row, col].IsGoal) break outer; } } 🔵 Читается ровно так, как задумано. continue outer переходит к следующей итерации внешнего цикла, а break outer полностью выходит из него, минуя остаток внутреннего. Никаких флагов и подсчёта уровней. Пара нюансов. break можно нацелить и на цикл, и на switch, а continue только на цикл, ведь продолжать switch нечего. И метка привязывается именно к тому циклу, перед которым стоит, поэтому двусмысленности, как с goto, здесь нет. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #sharp_view1,73%
  • 17 сент. 2025 г.без подписи1,43%
  • 11 авг.👍 Современные помощники для валидации параметров Помните те времена, когда каждый метод начинался с целой простыни проверок входных параметров? Копипаста if (string.IsNullOrEmpty(...)) была ежедневной рутиной: public void ProcessUser(string name, string email, int age) { if (string.IsNullOrEmpty(name)) throw new ArgumentException("Value cannot be null or empty.", nameof(name)); if (string.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", nameof(email)); if (age < 0) throw new ArgumentOutOfRangeException(nameof(age), "Value must be non-negative."); // Наконец-то бизнес-логика! } Код становился шумным, а реальная логика терялась в океане проверок. Каждый разработчик писал по-своему, сообщения об ошибках отличались, а про опечатки в nameof() вообще молчим. Теперь всё это превращается в лаконичные однострочники: public void ProcessUser(string name, string email, int age) { ArgumentException.ThrowIfNullOrEmpty(name); ArgumentException.ThrowIfNullOrEmpty(email); ArgumentOutOfRangeException.ThrowIfNegative(age); } Стандартная библиотека предлагает методы на все случаи жизни: // Проверки на null ArgumentNullException.ThrowIfNull(user); // Числовые диапазоны ArgumentOutOfRangeException.ThrowIfNegative(temperature); ArgumentOutOfRangeException.ThrowIfZero(divisor); ArgumentOutOfRangeException.ThrowIfNegativeOrZero(count); // Сравнения ArgumentOutOfRangeException.ThrowIfGreaterThan(progress, 100); ArgumentOutOfRangeException.ThrowIfLessThan(quantity, 1); ArgumentOutOfRangeException.ThrowIfEqual(status, Status.Invalid); ArgumentOutOfRangeException.ThrowIfNotEqual(version, expectedVersion); Эти методы — не просто синтаксический сахар. Они воплощают принцип fail-fast: обнаруживай проблемы немедленно, не позволяй невалидным данным распространяться по системе. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #sharp_view1,27%
  • 1 авг.🥳🥳 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #garbage_collector1,20%
  • 8 авг.💎 Вспоминаем SOLID SOLID — это 5 принципов объектно-ориентированного проектирования. Давайте повторим эту базу. — Single Responsibility Principle (Принцип единственной ответственности) Каждый класс должен иметь только одну причину для изменения. Плохо: класс UserManager и сохраняет пользователя в БД, и отправляет email. Хорошо: UserRepository хранит, EmailService отправляет письма. — Open/Closed Principle (Принцип открытости/закрытости) Классы должны быть открыты для расширения, но закрыты для изменения. Новый функционал добавляем через расширение, а не переписывание старого кода. Пример: вместо переписывания метода — создаём новый подкласс или внедряем стратегию. — Liskov Substitution Principle (Принцип подстановки Барбары Лисков) Объекты подклассов должны работать так же, как объекты родителя. Если Square наследуется от Rectangle, он должен вести себя как прямоугольник, а не ломать ожидания. Суть: наследование не должно рушить логику программы. — Interface Segregation Principle (Принцип разделения интерфейсов) Лучше много маленьких интерфейсов, чем один огромный. Плохо: интерфейс IMachine с методами print(), scan(), fax(). Хорошо: IPrinter, IScanner, IFax. Каждый класс реализует только нужное. — Dependency Inversion Principle (Принцип инверсии зависимостей) Зависимости должны быть от абстракций, а не от конкретных классов. Плохо: класс ReportGenerator напрямую вызывает MySQLDatabase. Хорошо: ReportGenerator работает с интерфейсом Database, а уже конкретная БД подставляется снаружи. Без SOLID код быстро превращается в спагетти, где одно изменение ломает всё. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #il_люминатор1,18%
  • 6 авг.📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #garbage_collector1,05%
  • 28 июл.😑 Мокать зависимости или тестировать на настоящих? Один из главных споров в тестировании. Одни мокают почти всё вокруг проверяемого класса. Такие тесты быстрые, изолированные и падают только из-за логики самого кода. Другие предпочитают реальные зависимости: базу в контейнере, настоящие сервисы и интеграционные сценарии. Да, такие тесты медленнее, зато они лучше показывают, как код ведёт себя в реальных условиях. На практике многие выбирают компромисс: внешние API и нестабильные сервисы мокают, а свои компоненты стараются тестировать вместе. 💬 А как у вас? 👍 — максимум моков, главное скорость и изоляция. 🔥 — минимум моков, лучше реальные зависимости. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #entry_point0,94%
  • 10 сент. 2025 г.🐸Библиотека шарписта #развлекалово0,91%