Rule #1
Do you have a consistent .NET Solution Structure?
  v9.0 Posted at 27/09/2014 7:03 AM by tiagoaraujo

​​​When developing software, we implement a dependency injection centric architecture.

Dependency Injection based architecture
Figure: A Dependency Injection based architecture gives us great maintainability
solutionlayout.png
Figure: Good Example - The Solution and Projects are named consistently and the Solution Folders organize the projects so that they follow the Onion Architecture

Dependencies and the application core are clearly separated as per the Onion Architecture.

In the above example you can clearly see:

Common Library projects are named [Company].[AssemblyName]. E.g. BCE.Logging is a shared project between all solutions at company BCE.

Other projects are named [Company].[Solution Name].[AssemblyName]. E.g. BCE.Sparrow.Business is the Business layer assembly for company ‘BCE’, solution ‘Sparrow’.

We have separated the unit tests, one for each project, for several reasons:

  • It provides a clear separation of concerns and allows each component to be individually tested
  • The different libraries can be used on other projects with confidence as there are a set of tests around them

Related rule