every technology and make a good choice for a complex application Thesis: whatever will be the choice could be the wrong choice …we are thinking to the app as a one big global ‘entity'
subsets… a subset could be composed by services... • Spit and conquer and Object Oriented Design • If you have to implement a complex system, don’t implement a complex system, implement a lot of simple systems
will modify the application, did you think about Maintenance costs? • Procedural is when you create a fast program (at the beginning) but difficult to maintain. “Tragically, the very same forces that make it so easy to add new features to a brand new Rails application are the ones that start to hold you back as the number of features grows.” cit. Matt Wynne
code is sick with a disease called "code connected” • Object-oriented programming is not immune • Time increases exponentially with the addition of new features.
is the main concept of Object Oriented Design • The trend has changed (90 years ago), now we have to focus on maintainability • The overhead of testing before code is smaller than you think and the real adding value is the way you develop better your application
SOLID principles • R. Wirfs-Brock, B. Wilkerson, “Object-Oriented Design: A Responsibility-Driven Approach” • Single responsibility principle Uncle Bob • Create a module coupling things that changes together? • Modules that communicates, but how?
communicate via protocols • Modules that exhibit a behavior not their data • Data are the guts of the module, they must not be exposed • All the public functions are API, let's take care and give them a meaning. • Each module should have its own explicit dependencies
BDD (stories and specs) you are more forced not to test the application but you focus on describe the behaviors. With BDD you tend to describes the behavior before coding, you specify what a function should do.
- Growing Object-Oriented Software by Guided by Tests, Steve Freeman, Nat Pryce - Implementing Domain-Driven Design by Vaughn Vernon - Unbreakable Domain Models by Mathias Verraes - Uncle Bob the clean Architecture http://blog.8thlight.com/uncle-bob/2012/08/13/ the-clean-architecture.html - DDD community - Matt Wayne GoRuCo 2012 Hexagonal Rails by Matt Wynne - Implementing Domain-Driven Design with Spring and vFabric Wes Williams, Vaughn Vernon - The RSpec Book Behaviour-Driven Development with RSpec, Cucumber, and Friends by David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North - Alberto Brandolini http://www.slideshare.net/ziobrando/ https://farm6.staticflickr.com/5134/5449083311_9a856145fa_b.jpg https://farm3.staticflickr.com/2583/3752448573_4cc6a2698a_b.jpg https://farm4.staticflickr.com/3325/3420223723_2805816861_b.jpg https://farm1.staticflickr.com/118/313590022_25c580474c_b.jpg https://farm4.staticflickr.com/3274/2886945884_8dfa5d849f_b.jpg https://farm5.staticflickr.com/4013/4290367973_c58749d73f_b.jpg https://farm9.staticflickr.com/8327/8091221482_dce187e288_b.jpg https://farm1.staticflickr.com/48/108484055_b07800b7c7_b.jpg https://farm8.staticflickr.com/7115/7445550970_32ac507395_b.jpg Assets