Transcript
Page 1: Application Architecture in Groovy

 

Page 2: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ABOUT  ME  

@danveloper  github.com/danveloper  

[email protected]   Principal  Consultant  

Page 3: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

WHAT  IS  AN  ARCHITECT?  

WHAT  IS  ARCHITECTURE?  

Page 4: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ARCHITECTURE  IS  NOT  JUST  ABOUT  STRUCTURE  

Page 5: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ARCHITECTURE  IS  A  SET  OF  PRINCIPLES  TO  FOLLOW  

Page 6: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ARCHITECTURE  SHOULD  BE  ADAPTABLE  &  EASY  TO  MAINTAIN  

Page 7: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

“ARCHITECT”  HAS  BECOME  A  BUZZ  WORD  

I’m  an  Architect!  

Page 8: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

“THE  BIG  PICTURE”  

Page 9: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

WHAT  MAKES  APPLICATION  ARCHITECTURE  IN  GROOVY  DIFFERENT?  

Page 10: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  IS  MORE  THAN  JUST  SYNTAX  SUGAR  

Page 11: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  IS  MORE  THAN  JUST  SYNTAX  SUGAR  

Page 12: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  “MAGIC”  IS  EVERYWHERE!  

Page 13: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

IDIOMATIC  GROOVY  CAN  BE  SCARY  

Page 14: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

“GOLDILOCKS  GROOVY”  NOT  TOO  GROOVY…  JUST  GROOVY  ENOUGH  

Page 15: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

PRINCIPLES  OF  APPLICATION  ARCHITECTURE  

Page 16: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

PREDICTABILITY  PATTERN:  TIGHTLY  COUPLE  FORM  AND  FUNCTION  

Page 17: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

THE  “FORM”  OF  A  RESOURCE    SHOULD  HINT  TO  ITS  “FUNCTION”  

Ü  LIKE GRAILS: “CONTROLLER”, “SERVICE”, “TAGLIB”!

 Ü  AVOID  NAMES  LIKE  DomainWizardBeanImpl!

Page 18: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

THE  “FUNCTION”  OF  A  RESOURCE    SHOULD  RESOLVE  ITS  “FORM”  

ü  Follow Single Responsibility Principle!

Page 19: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

MAKE  CODE  “MORE  READABLE”  

Page 20: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

EVERY  MINUTE  LOST  DECIPHERING…  IS  A  MINUTE  LOST  IMPLEMENTING  

Page 21: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BDD  FRAMEWORKS  AIM  FOR  “READABILITY”  

Page 22: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

IF  (ISUSINGGROOVY())  {  “USE  GROOVY!”()  }  

Page 23: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

SYNTAX  SUGAR  IS  A  GOOD  THING  

Page 24: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

CLOSURE  AS  FINAL  VARARG  IN  METHOD  

ü  Provides  “Scoped”  Execu(on  Environment    ü  Contains  code  to  enhance  readability  

ü  Programma(cally  determine  resolu(on    ü  Shortcut  otherwise  verbose  steps  

Page 25: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

MAPS  ARE  FIRST-­‐CLASS  CITIZENS  

ü  Map-­‐based  constructors  lend  code  to  self-­‐documenta(on    ü  Allow  explicit  named  assignments    ü  Ad-­‐hoc  data  structure  is  great  for  method  method  args    ü  Great  overall  reduc(on  of  code  verbosity  

Page 26: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

METHOD  MISSING  &  PROPERTY  MISSING  THE  “ALL  ELSE  FAILED”  HANDLERS  

Page 27: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

FLUENT,  HUMAN-­‐READABLE  DSLS  

ü  Dis(ll  reusable  complex  opera(ons  into  a  human-­‐readable  string    ü  Built-­‐in  self-­‐documenta(on  of  intent    ü  A  licle  capital  expense  to  facilitate  low  opera(ng  expense    ü  Great  developers  up  to  speed  very  quickly  

Page 28: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

FLUENT,  HUMAN-­‐READABLE  DSLS  

o  What  should  they  be  used?    o  Who  should  develop  the  DSL?  

Page 29: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BE  EXPLICIT  WITH  MAGIC  

Page 30: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

METACLASS  ENHANCEMENTS  CAN  COME  FROM…  

ü  Custom  MetaClasses    ü  Conven(on  MetaClasses  named:  

groovy.runtime.metaclass.[package].[class]MetaClass!  ü  Libraries  /  Plugins    ü  Anywhere  at  run(me!!  

Page 31: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BUILD  CONVENTION  AROUND    -­‐WHERE-­‐  

MAGIC  IS  COMING  FROM  

Page 32: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BE  VERY  CLEAR  WHEN  OVERLOADING  OPERATORS    

(USE  A  CATEGORY)  

Page 33: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

USE  CATEGORIES  FOR  ONE-­‐OFF  MIXINS,    OR  CONCEPT-­‐BASED  OVERLOADS  

Page 34: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

FAVOR  CONVENTION  OVER  CONFIGURATION  

Page 35: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  ECOSYSTEM  EMBRACES  CONVENTION-­‐OVER-­‐CONFIGURATION  

Page 36: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

USE  CONVENTION-­‐OVER-­‐CONFIGURATION  TO  BUILD  AN  ADAPTIVE  DEVELOPMENT  ENVIRONMENT  

Page 37: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

.ALL  DONE.    J  

QUESTIONS?  


Top Related