I Need to Stop Misusing Namespaces

At the recent NSBCon one interesting question that came about was how to structure a project. The panel consisting of various speakers had no answer, after all this is dependant upon the project in question. Therefore there is no right or wrong answer.

However one point they were in unison about was splitting the domain and technical implementation of a project apart by the correct use of in namespaces.

This is not the first time I've come across this, but I find myself breaking this principle on a regular basis. For example a typical project I work on looks like the following.

Problems

Solution

Use namespaces for related domain responsibilities. In turn, group together the objects and types that are used together.

An example of a better solution therefore would be:

Benefits

While this is the ideal way of structuring our applications it's not always possible. Some coding conventions actually encourage the first example, and depending on the configurability of certain frameworks this may prove difficult. That aside, I'll be making a strong push towards structuring my projects correctly going forwards.