Testability

705 views

Published on

Jonathan's Pecha Kucha

Published in: Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
705
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Testability

  1. 1. Testable Code – Mind Shi2s
  2. 2. Testable Code – Mind Shi2s
  3. 3. Flaw: Constructor does Real Work
  4. 4. Flaw: Constructor does Real Work • It violates the Single Responsibility Principle • Tes7ng Directly is Difficult • Subclassing and Overriding to Test is S7ll  Flawed • It Forces Collaborators on You
  5. 5. Warning Signs
  6. 6. Warning Signs • new keyword in a constructor or at field  declara<on  • Sta<c method calls in a constructor or at field  declara<on  • Anything more than field assignment in  constructors • Adding or using an ini<aliza<on block
  7. 7. Warning Signs
  8. 8. Warning Signs • Object not fully ini<alized a2er the constructor  finishes (watch out for ini<alize methods) • Control flow (condi<onal or looping logic) in a  constructor • CL does complex object graph construc<on  inside a constructor rather than using a factory  or builder 
  9. 9. Solu<on  Do not create collaborators in your constructor,  but pass them in. (Don’t look for things! Ask  for things!)
  10. 10. Flaw: Digging into Collaborators getUserManager().getUser(123).getProfile()     .isAdmin()    // this is egregiously bad (all you need to know if  the user is an admin) context.getCommonDataStore().find(1234)   // this is bad
  11. 11. Warning Signs
  12. 12. Warning Signs • Objects are passed in but never used directly  (only used to get access to other objects) • Law of Demeter viola<on: method call chain  walks an object graph with more than one dot (.) • Suspicious names: context, environment,  principal, container, or manager
  13. 13. Flaw: Bri9le Global State & Singletons
  14. 14. Flaw: Bri9le Global State & Singletons • Spooky Ac<on at a Distance
  15. 15. Warning Signs
  16. 16. Warning Signs • Adding or using singletons  • Adding or using sta<c fields or sta<c methods  • Adding or using sta<c ini<aliza<on blocks  • Adding or using registries  • Adding or using service locators
  17. 17. Flaw: Class Does Too Much
  18. 18. Flaw: Class Does Too Much a.k.a. … • Kitchen Sink  • Dumping Ground  • Class who’s Behavior has too many “AND’s”  • First thing’s KIll All The Managers (*See  Shakespeare)  • God Class  • “You can look at anything except for this one  class”
  19. 19. Warning Signs
  20. 20. Warning Signs • Summing up what the class does includes the  word “and”  • Class would be challenging for new team  members to read and quickly “get it”  • Class has fields that are only used in some  methods  • Class has sta<c methods that only operate on  parameters
  21. 21. It Read

×