StepOne | Степан Минин – Telegram
StepOne | Степан Минин
3.42K subscribers
245 photos
35 videos
6 files
310 links
StepOne by Степан Минин @ststphn

Твой первый шаг к успеху в программировании

Закрытый тг канал https://news.1rj.ru/str/tribute/app?startapp=slOA

По вопросам рекламы @Spiral_Yuri

Ютуб https://www.youtube.com/@steponeit
Download Telegram
StepOne | Степан Минин
Шёл 2023-й год, а некоторые C# разработчики, даже "ведущие", продолжают штамповать обобщённые репозитории... Мда...🤡 https://habr.com/ru/companies/itq_group/articles/747566/
Об этом не писал только ленивый…

Итак, почему обобщённый репозиторий - это антипаттерн.

Прежде всего, давайте вспомним, что из себя представляет паттерн репозиторий, особенно популярный в DDD.

Согласно Дяде Бобу, репозиторий посредничает между доменом и слоем представления данных, находясь в роли in-memory коллекции доменных объектов.

Проще говоря, это фасад для доступа к данным, который оборачивает конкретный источник данных: ORM, сервис, СУБД, файловая система, Active Directory и т.д.

Так вот, начну с неочевидного.

Если вы используете ORM, например, Entity Framework или NHibernate, то следует помнить, что эти библиотеки сами по себе предоставляют реализации не только обобщённых репозиториев, но и единиц работы Unit Of Work.

В случае EF DbContext является UOW, а DbSet<T> это обобщённый репозиторий.
В случае NHibernate оба паттерна инкапсулированы внутри ISession.

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

В отрыве от ORM, конечно обобщённые репозитории, в силу своей "обобщённости", превращаются в DAL код, намертво впаенный в алгоритмы бизнес-логики.

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

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

А домен не является обобщённым. Не каждая сущность может быть добавлена/удалена или отредактирована единым образом, не у каждой сущности будет репозиторий вовсе.

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

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

А обобщённый вариант не предоставляет осмысленного контракта.
Просто сравните две сигнатуры ниже:

// вообще не понятно, что происходит
T Find(object param);

// более читабельный код, который чётко определяет
// отношение между хранилищем данных и доменным объектом
Customer FindCustomerByName(string name);


Все эти аргументы говорят в пользу того, что создание обобщённых репозиториев - плохо в любом году.
👍172🥱2🔥1
Вот так выглядит медаль за тестирование на проде
😁23🤣4🤩3
- «Нами вообще никто не руководил. Однажды мне абсолютно нечего было делать, и я ушёл заниматься сёрфингом, потому что работал удалённо. Мне никому не нужно было отчитываться. Казалось, никто даже не знал, что я работаю у них», — так рассказывает бывший сотрудник Meta*, проработавший в компании два месяца. Его приняли в команду на должность дата-саентиста начального уровня.

Ну что ребят, я пошёл изучать data science 😁

https://habr.com/ru/companies/ruvds/articles/749056/
🤯7🤣4😁1😱1
StepOne | Степан Минин
Выступаю на конференции В сентябре, неожиданно для себя, поеду в Ульяновск, чтобы поучаствовать в международной IT конференции Стачка в качестве спикера. Так что всех желающих жду на своём докладе, поговорим про полиморфные контракты. https://nastachku.ru/vnedrenie…
Напоминаю, что 16 сентября буду выступать на Стачке в Ульяновске.

Если вы хотите приехать на конференцию, то сейчас самое время брать билеты.

Ведь для моих подписчиков, их друзей и коллег действует специальный промокод на скидку 10%:

StepOne
🔥10👍5🤩2
😁18🔥3😢3
Где-то в параллельной вселенной:

1. Java и JavaScript - это один и тот же язык

2. Машинный байт-код был создан специально для фильма "Матрица", он используется только в его титрах

3. HTML и CSS - самые продвинутые языки программирования

4. Комментарии в коде замедляют выполнение программы

5. ВОЗ разрешил ставить SQL-инъекции от ковида

6. Вышел новый стандарт C++: (С++)++, сокращённо - C#

7. UDP и TCP - это legacy протоколы, все сетевые коммуникации массово переводят на JSON
😁27🥴2🍌2❤‍🔥1🔥1🤩1
Тем временем количество скачиваний моей библиотеки контрактов для реализации паттерна "Посетитель" превысило 1000 🥳

Самое время поддержать проект звёздочкой ⭐️ на GitHub:
https://github.com/Stepami/visitor-net
🎉14🔥4👍211🏆1
Знай, что разницы нет😁
😁17❤‍🔥1🔥1🤩1🐳1💯1
Брокер сообщений на основе СУБД???

MassTransit в каком-то смысле зарекомендовал себя в качестве solid choice, когда дело доходит до разработки распределённых систем.

Однако, его проблема в том, что он содержит слишком много всего: AWS, Rabbit, in-memory 🤯

И вот совсем недавно, разработчики добавили ЕЩЁ 😰

Встречайте: транспорт сообщений на основе SQL базы данных.

Пока находится в активной разработке и стадии превью, но разработчики уверяют, что мощь PostgreSQL и Microsoft SQL Server можно обернуть во благо микросервисного общения.

Очень хочется потрогать новую технологию, но пока, к сожалению, нагрузка на работе не позволяет 😢

@steponeit
🔥7👍1🤯1
Соевой авторке внезапно может не хватить на самокат для штурма Верхнего Ларса.

С одной стороны капитализм - штука циничная.

Если бизнес в РФ и денежный оборот в рублях, то компании просто невыгодно оплачивать героине истории её путь к демократии.

С другой стороны недовольство переносчицы прогрессивных ценностей мне не понять.

Мантры вроде «мы команда-семья вовлечённая в продукт, которая меняет мир» это инфантильный самообман.

Можно и дальше сидеть в ожидании, пока дядя будет снижать твой уровень жизни.

А можно принять суровую реальность и понять, что вариантов немного - эффективный job hopping или работа на себя.
👍9🤯5😁2🏆2❤‍🔥1🔥1👏1🥴1
StepOne | Степан Минин pinned «Напоминаю, что 16 сентября буду выступать на Стачке в Ульяновске. Если вы хотите приехать на конференцию, то сейчас самое время брать билеты. Ведь для моих подписчиков, их друзей и коллег действует специальный промокод на скидку 10%: StepOne»
Главное противоречие ООП

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

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

Эта ситуация называется InterfaceImplementationPair.

В самом деле привычка восходит корнями к C/C++, где принято разделять header и code файлы.

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

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

Поэтому не стоит бояться отсутствия интерфейсов, код от этого не потеряет в чистоте.
👍10🔥3💯3🐳1
Стоит ли проверять логи в тестах?

В комментариях оставляйте развёрнутый ответ
Anonymous Poll
55%
Да
45%
Нет
Ровно год назад я создал этот канал 🥳

За это время вас стало намного больше - свыше 1500 человек 🤯

Думаю, стоит познакомиться ещё раз)

Меня зовут Степан и вот уже несколько лет я профессионально занимаюсь коммерческой разработкой на C# в крупных компаниях 😎

За это время у меня накопилось много знаний как по матчасти, так и в области построения IT-карьеры 👨‍🎓

Благодаря этому каналу могу делиться своим опытом с другими людьми:

▪️В рамках личных консультаций определяю сильные и слабые стороны, помогаю составить индивидуальный карьерный трек и во многом другом 🤝

▪️Провожу mock-собеседования, на которых получается оценить знания по C# в глубину и ширину 👨‍💻

Помимо этого читаю доклады на конференциях, редко но метко пишу на Хабр (топ-30 лучших авторов про C#), интересуюсь компиляторами и делаю свой ЯП.

Если у вас есть какие-то вопросы, то можно написать мне в лс: @ststphn
20👍8🏆3❤‍🔥1🎉1🤩1
StepOne | Степан Минин pinned «Ровно год назад я создал этот канал 🥳 За это время вас стало намного больше - свыше 1500 человек 🤯 Думаю, стоит познакомиться ещё раз) Меня зовут Степан и вот уже несколько лет я профессионально занимаюсь коммерческой разработкой на C# в крупных компаниях…»
😁29🤣3🔥1🤩1