data, context and interaction
TRANSCRIPT
![Page 1: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/1.jpg)
DCIData, Context and Interaction
![Page 2: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/2.jpg)
Trygve M. H. ReenskaugСоздатель MVC (1978-1979);
В 2000 начал разработку новой парадигмы;
В 2006 была готова рабочая модель;
К 2007-середине 2008 был готов прототип на C++.
![Page 3: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/3.jpg)
Зачем?Повысить читаемость кода;
Разделить представление чем система является, от того, что система делает;
Чтобы поддержать мышление объектами, что ближе к тому, как думают люди, в замен мышлению классами.
![Page 4: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/4.jpg)
Составные частиDataсодержит только данные и методы, которые непосредственно к ним относятся (напр. валидация)
ContextКласс или экземпляр, который содержит роли, необходимые для выполнения определенного сценария. Роли подмешиваются к объектам в рантайме.
InteractionСодержит набор методов, с помощью которых осуществляется взаимодействие.
![Page 5: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/5.jpg)
Let’s talk about Ruby
![Page 6: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/6.jpg)
What about Python?HTTPS://GITHUB.COM/AMOLENAAR/ROLES
![Page 7: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/7.jpg)
RailsRails — это MVC фреймворк (спасибо, Кэп!)
Поэтому работать приходится поверх MVC
![Page 8: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/8.jpg)
![Page 9: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/9.jpg)
![Page 10: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/10.jpg)
ПлюсыНа выходе получаем хорошо структурированный код;
Код легче тестировать;
Улучшаем ООП;
Решаем некоторые классические ООП проблемы (Account#transfer)
![Page 11: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/11.jpg)
МинусыНужно серьезно перестроить мозг
Фреймворки еще не готовы на 100%
На выходе можно получить половинчатое решение
![Page 12: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/12.jpg)
Problem?
![Page 13: Data, Context and Interaction](https://reader036.vdocument.in/reader036/viewer/2022081404/559c1e1a1a28abce298b466e/html5/thumbnails/13.jpg)
Jim Gay http://youtu.be/lhFSc0dWstohttp://blog.firsthand.ca/2011/10/rails-is-not-your-application.htmlUncle Bob http://www.youtube.com/watch?v=WpkDN78P884