In this session, we will discuss the Great Simplification Architecture, instead of creating abstract towers of babel, we will see how we can create agile, maintainable and easy to work with architectures and systems that allow you to just go in and start working, rather than spend a lot of time an effort hammering everything in sight, looking for the nail that the architecture diagram's page 239 says must be there.
50. Limit your abstractions
• Very small number, 4 – 8 in most apps
• Possible abstractions:
– Controllers
– Views
– Entities
– Commands
– Tasks
– Events
– Queries
51. Small infrastructure
• Enough to give you context for running
• < 5% of your app, or you lose
• Allow to make assumption about where you
run
52. Forget your testing instincts
• Code that makes assumptions about where it
is running is good code.*
– I have a way to access db
– I have a way to get current context info
• * for a given set of assumptions
56. Unit testing?
• Do you actually care about the unit?
• I care about the system, not the unit.
• What happen when I need to refactor?
– Unit Tests make assumptions about
implementation.
• You’ll have a User Service
59. What you end up with?
• A lot of classes, following same patterns.
• Cookie cutter code.
• Easy to get into
• Easy to understand
• Major decisions in infrastructure (when to
run, how to run, what is the context)
60. How to ensure it works?
• Tests
• System tests, actually testing meaningful stuff