Vaughn Vernon (@VaughnVernon@mastodon.social) Profile picture
Software Ecologist, Architect, Modeler | #DDDesign, Systems Transformation | 4x author, Addison-Wesley Signature Series | @kalele_io products @kalele_domo
Mar 22, 2022 6 tweets 2 min read
In Implementing #DDDesign why use Anticorruption Layer rather than a Repository to integrate with another Bounded Context?

Typically the Repository pattern is used as an Adapter in front of a database. In general you could think of a Repository as an AcL over a database. 1/6 But then again, an AcL is at least both of these: (1) an Adapter, and (2) a Translator. Typically a Repository doesn't translate from database data into a model's data. Usually database data is at most reshaped when hydrating 2/6
Mar 21, 2022 5 tweets 1 min read
Q: In the book "Implementing DDD" you say to do code reviews with domain experts. Really? How?

A: First, I didn't say that.

The point is that business experts can understand tests if the tests follow the language that the experts helped develop and if the tests present 1/5 realistic scenarios with realistic data/information.

I don't know how many times I have seen tests with completely bogus scenarios and data. For example, George Washington and Abraham Lincoln have no value-add as personas in most modern contexts. 2/5
Jan 28, 2019 5 tweets 2 min read
Are you designing software with names like these?

Task<IGameGrain> GetCurrentGame();
Mono<Employee> getEmployeeById(String id);
Flux<Employee> getAllEmployees();

Really? Is that your final answer? Poor choices:

1. Technical component name in protocol.
2. Task doesn't describe the eventual completion of an async value.
3. Mono " " " " " " " ...
4. Flux " " " " " " " ...
5. The word Get/get/GeT/gEt/geT/etc.