1

Say I have a foundation module in my solution called "Tagging" its full namespace name is "Sitecore.Foundation.Tagging". I want to build a new module dependent on Tagging which still needs to be a foundation module. Is it ok/logical/helix-compliant to place this in the same folder and call it something like "Sitecore.Foundation.Tagging.SomeNonCoreTaggingFunctionality". So in the solution file system we have something like:

\src\Foundation\Tagging\Code

and then inside this folder would be

Sitecore.Foundation.Tagging.csproj
Sitecore.Foundation.Tagging.SomeNonCoreTaggingFunctionality.csproj

1 Answer 1

3

Two Modules should be split into different structures in your foundation layer. However they can definitely reference each other.

http://helix.sitecore.net/principles/architecture-principles/layers.html#foundation-layer

Unlike the Feature layer, there is no strict convention on dependencies between modules in the Foundation layer. This means that one Foundation layer module can depend on another Foundation layer module in the solution – as long as they rely on the basic principles on component architecture such as the Acyclic Dependencies Principle and the Stable Abstractions Principle:

Keep in mind the rule basically states that dependencies from a current module should always be more stable than the current module. Having said all that, you asked specifically about where to place this module and the namespacing. I'd recommend not placing it in the same folder as another module, since if it really is another module than it should have clear separation. But that is just my opinion, Helix on the other hand doesn't include this, and there is nothing that says you can't do that.

But if you are considering placing them in the same folder as the other module. I question if it really is another Module or just another project that's part of the existing Tagging module. It's hard to make that determination based on the details provided, but you should consider if it really belongs as another module.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.