Code’n’Coffee #28 Back-end

Довгоочікувана подія мала місце 25 травня в офісі компанії stfalcon.com.

Це були 2 надзвичайно цікаві і актуальні доповіді від core-розробника Yii Дмитра Науменка. Дану подію я чекав з нетерпінням, оскільки останній схожий івент відбувся більше року назад.

Dependency Injection, Container і Service Locator

Перша доповідь була про залежності, як з ними боротись і які у нас є варіанти вирішення проблеми зв’язаності.

Дмитро, окрім теорії, на прикладі мінідодатку поступово проводив рефакторинг, видаляючи залежності, розповідаючи про можливі рішення і пояснюючи, які проблеми той чи інший варіант може за собою нести. Врешті, все звелось до використання Dependency Injection, Container і Service Locator як шляхів вирішення цих проблем. Хоча я і знав перед доповіддю про DI, DiC, Service Locator, але все виявилося доволі цікавим і вартим моєї уваги.

Доречі, у версії Symfony 3.3, яка вийшла у травні 2017, з’явилась підтримка Service Locator.

«DDD — стоит ли игра свеч?»

Друга доповідь була про DDD. Про те, що це таке, що покликане вирішувати DDD, що нас спонукає використовувати цей підхід, які переваги і які проблеми виникають при його використанні.

Як і до цього, доповідь була побудована на прикладі мінідодатку. Дмитро розповів про основні визначення (домен, модель, загальна мова, контекст), про шари DDD (Domain, Infrastructure, Application), далі був ітеративний рефакторинг коду з використанням основних будівельних блоків DDD (Entity, Repository, Service, ValueObject, DTO, Aggregate) з детальним поясненням.

У кінці доповіді Дмитро сказав, що DDD — це тільки рекомендації, а не правила. і ідеї DDD можна використовувати по частинкам.

Дмитро майстерно (всього за 40 хвилин!) розповів про надзвичайно глибоку тему. Отже, виступ, дуже сподобався, так як я не знав усіх ідей і концепцій DDD. Доречі, у Symfony використовуються деякі будівельні блоки зі світу DDD (Entity, Repository, Service).

Слайди.