I only split code into separate assemblies when I need to reuse it for two different applications (to a large extent). Therefore, I start with everything in one project, and when the need to reuse the code becomes obvious, I create a new assembly and move the code (sometimes it is obvious from the very beginning, for example, when you need to have a web application and win forms, thing).
Re. Namespaces, I prefer it to be well-organized, so it’s clear where each class belongs and what it should be used for.
source
share