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).

Слайди.