A messaging pattern advocating for natural language names in software messages. Events should use past tense sentences (CustomerWasInvoiced), commands use imperative form (FulfilOrder), queries use questions (WhichInvoicesAreUnpaid), and exceptions use negative statements (UnpaidOrdersMayNotBeFulfilled). This approach, rooted in Domain-Driven Design's ubiquitous language, makes code more readable to domain experts and improves test scenarios written in a BDD-style given/when/then structure. Code examples show how expressive naming makes projectors and test scenarios self-documenting.

3m read timeFrom verraes.net
Post cover image
Table of contents
ProblemSolutionExamplesDiscussionTest scenariosCodeGoing further