When working within a single project that contains multiple namespaces, should these namespaces be treated as boundaries? Or is it acceptable that any namespace can access any other namespace?
For example, say I have the following namespaces in a project called Physics
- Physics.Models
- Physics.Math
Say in this case that some Models use classes defined in Math, and Math uses classes defined in Models. Is this an acceptable solution? Does there need to be some hierarchy to the namespace names that indicates dependencies? Something like
- Physics.Math
- Physics.Math.Models
Are there rules that should be followed? Or is this just left up to the developer to make smart and pragmatic decisions about relationships within a single project?