This is a refactoring where an example task goes through rounds of iteration, improving the design with commentary.
Our goal is to create a service for sending email. We need a set of options that fit into two sets:
- Service options, that will remain constant for the service's lifetime, like transport configuration.
- Per-email options, that will be used to send a single email.
We separate the two for ergonomics.