MicroObjects Technical Practices 20180419

5b92c5ea42bc2c2ab28d973d5da63cd6?s=47 Quinn
April 19, 2018

MicroObjects Technical Practices 20180419

What practices are used to wire in the microObjects style? This presentation goes over the 12 primary practices that produce simple, understandable, testable code resulting in a highly maintainable product.

5b92c5ea42bc2c2ab28d973d5da63cd6?s=128

Quinn

April 19, 2018
Tweet

Transcript

  1. @TheQuinnGil https://QuinnGil.com µObjects

  2. @TheQuinnGil https://QuinnGil.com Who Am I? • Quinn Gil ◦ @TheQuinnGil

    ◦ https://QuinnGil.com • Professionally programming 20 years • Passion for helping others write better • Coding is my hobby µObjects
  3. @TheQuinnGil https://QuinnGil.com Single Responsibility µObjects to the extreme µObjects

  4. @TheQuinnGil https://QuinnGil.com Encapsulation µObjects ?

  5. @TheQuinnGil https://QuinnGil.com Encapsulation µObjects Behavior

  6. @TheQuinnGil https://QuinnGil.com µObjects Never Return Your Data

  7. @TheQuinnGil https://QuinnGil.com µObjects Never Return Your Data

  8. @TheQuinnGil https://QuinnGil.com Immutability - Externally Immutable µObjects

  9. @TheQuinnGil https://QuinnGil.com Immutability - Externally Immutable µObjects

  10. @TheQuinnGil https://QuinnGil.com Immutability - Externally Immutable µObjects

  11. @TheQuinnGil https://QuinnGil.com Immutability - Internally Immutable µObjects

  12. @TheQuinnGil https://QuinnGil.com Immutability µObjects

  13. @TheQuinnGil https://QuinnGil.com No ‘new’ Inline - Inversion of Control µObjects

  14. @TheQuinnGil https://QuinnGil.com No ‘new’ Inline - Inversion of Control µObjects

  15. @TheQuinnGil https://QuinnGil.com No ‘new’ Inline - Injection µObjects

  16. @TheQuinnGil https://QuinnGil.com No ‘new’ Inline - All Knowing µObjects

  17. @TheQuinnGil https://QuinnGil.com No ‘new’ Inline - All Knowing µObjects

  18. @TheQuinnGil https://QuinnGil.com No ‘new’ Inline - DIY µObjects

  19. @TheQuinnGil https://QuinnGil.com Anti-Pattern: Primitive Obsession µObjects

  20. @TheQuinnGil https://QuinnGil.com Anti-Pattern: Primitive Obsession µObjects

  21. @TheQuinnGil https://QuinnGil.com Anti-Pattern: Primitive Obsession µObjects

  22. @TheQuinnGil https://QuinnGil.com Anti-Pattern: Primitive Obsession µObjects

  23. @TheQuinnGil https://QuinnGil.com Anti-Pattern: Primitive Obsession µObjects

  24. @TheQuinnGil https://QuinnGil.com Anti-Pattern: Primitive Obsession µObjects

  25. @TheQuinnGil https://QuinnGil.com Anti-Pattern: Primitive Obsession µObjects

  26. @TheQuinnGil https://QuinnGil.com Encapsulate Relationships µObjects

  27. @TheQuinnGil https://QuinnGil.com Encapsulate Relationships µObjects

  28. @TheQuinnGil https://QuinnGil.com No Nulls µObjects

  29. @TheQuinnGil https://QuinnGil.com No Nulls µObjects Null Object Pattern

  30. @TheQuinnGil https://QuinnGil.com ‘if’ Only as Guard Clause µObjects

  31. @TheQuinnGil https://QuinnGil.com ‘switch’ & ‘else’ Are Always Evil µObjects

  32. @TheQuinnGil https://QuinnGil.com ‘switch’ & ‘else’ Are Always Evil µObjects

  33. @TheQuinnGil https://QuinnGil.com ‘switch’ & ‘else’ Are Always Evil µObjects

  34. @TheQuinnGil https://QuinnGil.com Composition Over Inheritance µObjects

  35. @TheQuinnGil https://QuinnGil.com Composition Over Inheritance µObjects

  36. @TheQuinnGil https://QuinnGil.com µObjects Interface Everything

  37. @TheQuinnGil https://QuinnGil.com No Statics µObjects

  38. @TheQuinnGil https://QuinnGil.com No Public Constants µObjects

  39. @TheQuinnGil https://QuinnGil.com Never Type Inspection or Reflection µObjects

  40. @TheQuinnGil https://QuinnGil.com No Asymmetric Marriage µObjects

  41. @TheQuinnGil https://QuinnGil.com No Asymmetric Marriage µObjects

  42. @TheQuinnGil https://QuinnGil.com No Asymmetric Marriage µObjects

  43. @TheQuinnGil https://QuinnGil.com Operating System Abstraction Layer µObjects

  44. @TheQuinnGil https://QuinnGil.com µObjects Practices µObjects • Never Return Your Data

    • Always Immutable • No ‘new’ Inline • No Primitive Obsession • Encapsulate Relationships • No nulls • ‘if’ Only as Guard Clause • ‘switch’ & ‘else’ Always Evil • Composition Over Inheritance • Interface Everything • No Statics • No Public Constants • No Asymmetric Marriage • OS Abstraction Layer An Object Does A Single Thing
  45. @TheQuinnGil https://QuinnGil.com µObjects - What do we get? µObjects Maintainability

  46. @TheQuinnGil https://QuinnGil.com µObjects

  47. @TheQuinnGil https://QuinnGil.com µObjects µObjects Single Responsibility to the Extreme

  48. @TheQuinnGil https://QuinnGil.com µObjects Resources https://QuinnGil.com