Domain Model Project – Naming a Domain Model Project

domain-driven-designnaming

This question follows on from my other question here: How does an isolated class (or group of isolated classes) fit into a Domain Model?

I have looked at a few domain models online:

They all have different naming conventions for the Domain Modelproject. The first calls the project: Logic; the second calls it DomainModel and the third calls it: DomainModelLayer.

I have also seen questions on here, which recommend calling the Domain project: Core; Domain and Domain.BoundedContext etc e.g. this one: https://stackoverflow.com/questions/6865543/whats-a-recommended-solution-structure-for-a-somewhat-large-website-in-asp-net/6866482

A lot of the questions and Visual Studio solutions I have quoted date back to 2010/11. Is there a recommended approach to this these days. What should I expect when looking at the name of a domain model project?

Best Answer

What should I expect when looking at the name of a domain model project?

Most probably the naming should follow some kind of DSL as proposed by Martin Fowler.

Without having any knowledge about the specifically addressed problem domain, it's hard to tell what you "can expect".

In the end it depends, how well the designers of some Domain Model grasped what is the most "natural naming" for their consumers and customers, and how the software developers can easily use these terms for their technical aspects.

That's the "creative part" (and art) software architects contribute, to glue the technical aspects and the problem domain specific terms together, such that it's easier to understand for the software developers and the customers at each other end.


The name of the Domain Layer of any system itself, is probably best described as "Domain Model or "Domain Layer".

Another highly related concept is the Domain Model (also from a Pattern Catalog proposed by M. Fowler).


I can't (counter) comment @Robert Harway's comment yet, though I don't believe that's entirely "opinion based". There are methodologies and techniques you can apply, to get that right as mentioned above.