В XING мы пишем на OO языках. С развитием проектов скорость разработки новых сценариев существенно снизилась, несмотря на (а отчасти и благодаря) применению современных framework'ов, упрощающих и ускоряющих разработку. Так происходило до тех пор, пока мы не сменили парадигму OOP на DCI.
DCI расшифровывается как Data-Context-Interaction. Этот подход был впервые применен Trygve Reenskaug, автором знаменитого паттерна MVC. Немногие знают, что MVC сначала назывался MVC-U, где U обозначало user'а, управляющего моделью предметной области через View с Controller'ом. Но в какой-то момент о user'е забыли. DCI - это попытка вернуть фокус разработчиков на взаимодействие пользователя с системой. Применяя эту парадигму, программист начинает думать, а главное, писать код так, как пользователь представляет себе модель предметной области, а именно в терминах объектов данных (Data), которые в разных ситуациях (Context) по-разному взаимодействуют (Interaction) между собой, исполняя разные роли.
В своем докладе я покажу, как XING применяет DCI. На примерах из нашего кода мы обсудим проблемы традиционного OO-подхода и проследим за трансформацией кода с применением DCI. Я также покажу, как DCI упростил применение Domain Driven Design и позволил нам вести разработку в Behaviour Driven стиле.
С ростом сложности решений разработчикам становится все сложнее поддерживать и развивать их код, построенный на принципах OOP, и, так называемых, лучших практиках. DCI - это инструмент, позволяющий масштабировать бизнес-логику с ростом сложности системы, упрощая её код и сам процесс разработки. Я считаю, что DCI - это обязательный инструмент в арсенале современного разработчика, пишущего на OO языках.