SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
От репозитория
к команде
Alexander Shkurko
2
@coderimus
🧑 💻 инженер
🤝 contribute to
2
3
AGENDA
ПРОБЛЕМАТИКА НАСЛЕДОВАНИЯ
РЕПОЗИТОРИЙ vs КОМАНДА
ОТ РЕПОЗИТОРИЯ К КОМАНДЕ
QA
3
4
4
5
5
6
6
7
7
8
А как выглядит “#holywar”?
8
9
КАК
РИМСКИЙ
СЕНАТ?
9
КАК ПАЛАТА
ЛОРДОВ?
10
11
НЕТ
11
ТЫ ИСПОЛЬЗУЕШЬ
КОМПОЗИЦИЮ!
И ЧЕ?
Я практикующий программист
академик и говорю тебе что
наследование - это зло!
12
И ЧЕ?
И что? Наследование -
это хорошо
ТЫ ИСПОЛЬЗУЕШЬ
КОМПОЗИЦИЮ!
13
ТЫ ИСПОЛЬЗУЕШЬ
КОМПОЗИЦИЮ!
И ЧЕ?
Я практикующий
программист
академик и говорю
тебе что
композиция - это
фиаско!
14
И ЧЕ?
И что? Композиция -
это хорошо
ТЫ ИСПОЛЬЗУЕШЬ
КОМПОЗИЦИЮ!
15
“HOLY WAR” AS IT IS
16
СОВЕРШЕННО РАЗНЫЕ
ИНСТРУМЕНТЫ*
17
* но поговорим о
проблемах наследования
🙈
18
Какие есть проблемы у
наследования?
19
1. Object coupling - сильная связанность объектов
2. Сложность повторного использования объектов
3. Сложность покрытия тестами
4. Нарушение KISS и SOLID (IMHO)
20
Задача с квадратом и прямоугольником
Дан класс реализующий квадрат и класс
реализующий прямоугольник. Какой класс вы бы
наследовали от какого или предложили бы другой
вариант решения?
21
22
Rectangle
S = a*b
22
Square
S = a*2
23
24
Square
inherited
Rectangle
24
Square inherited Rectangle
�� ��
25
26
Rectangle
inherited
Square
26
27
Square inherited Rectangle
��♀ ��
27
✅ Правильный ответ
Если наследование: создать абстрактный класс
Figure и наследоваться от него.
Не использовать наследование. Использовать
композицию и команду.
👯👯‍♂Лучший ответ
28
Square Rectangle
29
30
РЕПОЗИТОРИЙ
vs
КОМАНДА
В
31
R.
Мистер “R” Repository
● ✅ Работает с коллекцией объектов
● 👎 У него много “связей” с другими
объектами
● ✅ Хорош в WebAPI
● 👎 Супер тяж: подгружает множество
зависимостей
● 💩 Может быть stateful
32
Посмотрим на ProductRepository в качестве
“тяжелого” примера
33
А ничего не видно потому, что construct тяжелее Сатурна
24 зависимости 🤦‍♂🤦
34
И при чем тут наследование?
● Наследование у mr. R в Resource models
● Abstract models - часто наследуют в бизнес
моделях
● Collection наследуют AbstractCollection
35
Мистер “C” Command
● ✅ Одно сплошное действие
● ✅ Простой и надежный
C.
● ✅ Никому не рассказывает что
делает реализация
● ✅ С ним легко читать код
потому, что его имя говорит
само за себя
● ✅ Stateles 😘
36
Q&A

Mais conteúdo relacionado

Mais de Magecom UK Limited

Magento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagecom UK Limited
 
Making the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van RaanMaking the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van RaanMagecom UK Limited
 
Advanced GIT or How to Change the History
Advanced GIT  or How to Change the HistoryAdvanced GIT  or How to Change the History
Advanced GIT or How to Change the HistoryMagecom UK Limited
 
MSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложностиMSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложностиMagecom UK Limited
 
Adobe Stock Integration community project
Adobe Stock Integration community projectAdobe Stock Integration community project
Adobe Stock Integration community projectMagecom UK Limited
 
Proof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s RazorProof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s RazorMagecom UK Limited
 
Что нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайтаЧто нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайтаMagecom UK Limited
 
Magento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это былоMagento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это былоMagecom UK Limited
 
Experience in Magento Community Projects
Experience in Magento Community ProjectsExperience in Magento Community Projects
Experience in Magento Community ProjectsMagecom UK Limited
 
UI components: synergy of backend and frontend
UI components: synergy of backend and frontendUI components: synergy of backend and frontend
UI components: synergy of backend and frontendMagecom UK Limited
 
MSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party SystemsMSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party SystemsMagecom UK Limited
 
Typical customization pitfalls in Magento 2
Typical customization pitfalls in Magento 2Typical customization pitfalls in Magento 2
Typical customization pitfalls in Magento 2Magecom UK Limited
 
Accelerated Mobile Pages (AMP) in Magento
Accelerated Mobile Pages (AMP) in MagentoAccelerated Mobile Pages (AMP) in Magento
Accelerated Mobile Pages (AMP) in MagentoMagecom UK Limited
 
Automated Testing in Magento 2
Automated Testing in Magento 2Automated Testing in Magento 2
Automated Testing in Magento 2Magecom UK Limited
 
История одной трансформации: как Magento 1 разработчику быстро переориентиров...
История одной трансформации: как Magento 1 разработчику быстро переориентиров...История одной трансформации: как Magento 1 разработчику быстро переориентиров...
История одной трансформации: как Magento 1 разработчику быстро переориентиров...Magecom UK Limited
 
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...Magecom UK Limited
 
API Design Best Practices by Igor Miniailo
API Design Best Practices by Igor MiniailoAPI Design Best Practices by Igor Miniailo
API Design Best Practices by Igor MiniailoMagecom UK Limited
 

Mais de Magecom UK Limited (20)

Magento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov AvexeyMagento & Cloud - Korostelov Avexey
Magento & Cloud - Korostelov Avexey
 
Making the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van RaanMaking the Magento 2 Javascript Loading Great Again - Robin van Raan
Making the Magento 2 Javascript Loading Great Again - Robin van Raan
 
Deep Dive in Magento DI
Deep Dive in Magento DIDeep Dive in Magento DI
Deep Dive in Magento DI
 
Advanced GIT or How to Change the History
Advanced GIT  or How to Change the HistoryAdvanced GIT  or How to Change the History
Advanced GIT or How to Change the History
 
MSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложностиMSI In-Store Pickup Функционал & сложности
MSI In-Store Pickup Функционал & сложности
 
Adobe Stock Integration community project
Adobe Stock Integration community projectAdobe Stock Integration community project
Adobe Stock Integration community project
 
Proof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s RazorProof of Concept for Magento 2 Projects: Occamo’s Razor
Proof of Concept for Magento 2 Projects: Occamo’s Razor
 
Что нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайтаЧто нужно знать девелоперу о SEO на этапе проектирования сайта
Что нужно знать девелоперу о SEO на этапе проектирования сайта
 
Magento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это былоMagento-сертификация: инструкция по применению и как это было
Magento-сертификация: инструкция по применению и как это было
 
Experience in Magento Community Projects
Experience in Magento Community ProjectsExperience in Magento Community Projects
Experience in Magento Community Projects
 
UI components: synergy of backend and frontend
UI components: synergy of backend and frontendUI components: synergy of backend and frontend
UI components: synergy of backend and frontend
 
MSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party SystemsMSI - Reservation Challenges with 3rd-party Systems
MSI - Reservation Challenges with 3rd-party Systems
 
Business wants what?!
Business wants what?!Business wants what?!
Business wants what?!
 
Typical customization pitfalls in Magento 2
Typical customization pitfalls in Magento 2Typical customization pitfalls in Magento 2
Typical customization pitfalls in Magento 2
 
Accelerated Mobile Pages (AMP) in Magento
Accelerated Mobile Pages (AMP) in MagentoAccelerated Mobile Pages (AMP) in Magento
Accelerated Mobile Pages (AMP) in Magento
 
Automated Testing in Magento 2
Automated Testing in Magento 2Automated Testing in Magento 2
Automated Testing in Magento 2
 
История одной трансформации: как Magento 1 разработчику быстро переориентиров...
История одной трансформации: как Magento 1 разработчику быстро переориентиров...История одной трансформации: как Magento 1 разработчику быстро переориентиров...
История одной трансформации: как Magento 1 разработчику быстро переориентиров...
 
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
Микросервисы и Magento: 10 пунктов, которые надо сделать, чтобы избежать ярки...
 
API Design Best Practices by Igor Miniailo
API Design Best Practices by Igor MiniailoAPI Design Best Practices by Igor Miniailo
API Design Best Practices by Igor Miniailo
 
Magecom DE
Magecom DEMagecom DE
Magecom DE
 

From Repositories to Commands - Alexander Shkurko