Когда мидл-разработчик дорастает до сеньора, его, обычно мучает вопрос: «как правильно писать приложение?» Понятно, что когда он был джуном, ему давали совсем атомарные задачи и он развлекался покрытием тестов или написанием контроллеров. Переход в мидлы знаменуется назначением разработчику более абстрактных задач вроде реализации сервисов, репозиторной части или интеграции с внешними сервисами посредством клиентов. Но в какой‑то момент мидл начинает задавать самому себе вопросы: «как найти единственно правильный способ написать приложение с нуля?»
Рубрика «паттерны проектирования»
Domain-Driven Design: чистая архитектура снизу доверху
2024-11-29 в 7:12, admin, рубрики: интерфейсы, луковичная архитектура, паттерны проектирования, чистая архитектура[Паттерны API] Списки и организация доступа к ним
2023-05-09 в 6:53, admin, рубрики: api, паттерны проектирования, спискиЭто глава 20 моей книги «API». v2 будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.
В предыдущей главе мы пришли вот к такому интерфейсу, позволяющему минимизировать коллизии при создании заказов:
Читать полностью »
Неустаревающие книги?
2022-06-15 в 16:44, admin, рубрики: .net, C#, инверсия зависимостей, модульное тестирование, ооп, паттерны проектирования, чистая архитектураНекоторым из этих книг уже очень много лет. Главная книга о паттернах — Design Patterns — увидела свет в 1994-м году, значит, ей уже почти тридцать. По сравнению с ней, Clean Architecture, вышедшая десять лет назад — практически, ребёнок!
Но десять лет для индустрии — гигантский срок. Возможно, эти книги уже устарели и нам они не нужны?
Перечитаем и попробуем разобраться.
Приёмы объектно-ориентированного проектирования
Способ качественно изучить паттерны проектирования
2021-10-30 в 18:11, admin, рубрики: design patterns, gang of four, head first, patterns, ооп, паттерны, паттерны проектированияПривет! Когда я изучал паттерны проектирования, я делал это с помощью прочтения двух книг: простую и понятную книгу от Head First одновременно со сложной и менее понятной книгой от Банды Четырех. Ниже описан мой опыт того, как именно я это делал, плюс выводы, впечатления и советы
ДисклеймерЧитать полностью »
С++ Concept-Based Polymorphism в продуктовом коде: PassManager в LLVM
2020-06-08 в 13:16, admin, рубрики: c++, LLVM, Блог компании Samsung, идиомы с++, Компиляторы, наследование, ооп, паттерны проектирования, полиморфизм, шаблоныСегодня речь пойдет про одну интересную идиому, которую ввел Шон Парент (Adobe) — известный деятель в C++-сообществе. Он часто выступает с докладами и публикует цикл статей Better Code. Одна из его идей, которую используют в Photoshop — это Concept-Based Polymorphism. Это когда мы реализуем полиморфизм не через явное наследование, а с помощью техники, включающей обобщенное программирование, и по итогам получаем некоторые дополнительные преимущества.
Статья устроена следующим образом:
- Что вообще такое Concept-Based Polymorphism и зачем он нужен
- Немного про LLVM и ее устройство
- Пример Concept-Based Polymorphism в LLVM PassManager
- Преимущества подхода
Картинка, иллюстрирующая тезис «Наследование — это зло». Источник
Читать полностью »
Написать данную статью меня заставили две причины. Совсем недавно я познакомился с паттерном Абстрактная фабрика. Как говорится – «Не умеешь сам, научи товарища». Известно, что один из лучших способов закрепления материала – это объяснение кому-либо ранее изученного. Вторая причина – в процессе изучения данного паттерна я не встретил материала, который лично для меня излагал бы вполне ясно суть Абстрактной фабрики (по крайней мере на Хабре).
Итак, приступим. Самый первый вопрос, на который нужно ответить самому себе, изучая данный паттерн: «Что же такое Абстрактная фабрика». Самый простой и точный ответ, гласит, что Абстрактная фабрика – это «фабрика фабрик». Но здесь появляется второй вопрос: «Для чего вообще может кому-нибудь понадобиться «фабрика фабрик»? Чтобы на него ответить рассмотрим пример из реальной жизни.
Читать полностью »
Python не запрещает вызов private-protected методов потому, что любит тебя :-)
2019-06-21 в 6:54, admin, рубрики: python, yaml, Анализ и проектирование систем, нормальное программирование, паттерны проектирования, Программирование, Проектирование и рефакторинг, Совершенный код, холиварМного копий сломано в обсуждениях того, почему питон эдакий бяка — не запрещает вызывать непубличные методы. И конечно, не раз звучали объяснения в духе «мы все тут взрослые люди», но похоже их было недостаточно, мне кажется, я наконец понял, как это объяснить более понятно, надеюсь, что это действительно так.
Напомню, что для private методов питон всего-лишь динамически изменяет имя и никак не ограничивает доступ к нему, а для protected не делает и этого, это просто соглашение об именовании методов, для тех кто не очень в курсе, есть дополнительные материалы тут и тут.
Читать полностью »