Refactoring Workshop Hexagonal Rails @mattwynne GOTO !Amsterdam !| !18th !June !2013 Tuesday, 18 June 13
Structure of this session: • Installing things (first pass) • Intro presentation • Installing things (for real) • Refactoring exercise • Further exploration • Show & tell Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
and then... Tuesday, 18 June 13
Tuesday, 18 June 13
Why? Tuesday, 18 June 13
Tuesday, 18 June 13
Connected Tuesday, 18 June 13
Modular Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Modular, in the large Tuesday, 18 June 13
Tuesday, 18 June 13
Modular, in the small Tuesday, 18 June 13
Tuesday, 18 June 13
Your domain model is not in your classes, it's in the communication patterns between the objects at runtime . Tuesday, 18 June 13
Your domain model is not in your classes, it's in the communication patterns between the objects at runtime . — Steve Freeman & Nat Price Tuesday, 18 June 13
Your domain model is not where you think it is Tuesday, 18 June 13
Your domain model is in the protocols Tuesday, 18 June 13
Procedural code gets information then makes decisions. Object-oriented code tells objects to do things. — Alec Sharp, Smalltalk by Example Tuesday, 18 June 13
Tell, don't ask Procedural code gets information then makes decisions. Object-oriented code tells objects to do things. — Alec Sharp, Smalltalk by Example Tuesday, 18 June 13
Core domain model cannot depend on the framework Rules T e l l o b j e c t s , a s k v a l u e s Tuesday, 18 June 13
Implications Tuesday, 18 June 13
Core domain model cannot C o r e d o m a depend on the i n m o d e l c a n n o framework t i n h e r i t f r o m A c t i v e R e c o r d F r a m e w o r k c o m m u n i c a t e s w i t h t h e c o r e d o m a i n v i a A d a p t e r s Tuesday, 18 June 13
s e t a l p m e t Y w o e u i V c r a e n d ' t n s e a r y d : l i u f o ¡ h u e s s l b e a r t . u s m a v m e i m o r f s e u l a v T e l l o b j e c t s , a s k v a l u e s Tuesday, 18 June 13
Example: Passive Controller Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Tuesday, 18 June 13
Let's explore! Tuesday, 18 June 13
References http://nccasta ff .bournemouth.ac.uk/jmacey/CA1/Papers/Responsibility-Driven%20Design.pdf http://www.wirfs-brock.com/PDFs/How%20Designs%20Di ff er.pdf http://www.threeriversinstitute.org/blog/?p=338 http://alistair.cockburn.us/Hexagonal+architecture http://www.growing-object-oriented-software.com/ http://pragprog.com/articles/tell-dont-ask http://devblog.avdi.org/2012/03/15/now-available-objects-on-rails/ http://mattwynne.net/category/hexagonal-rails/ Tuesday, 18 June 13
Recommend
More recommend