Others have recommended that you hold off, which is good advice. However, this is how I would start to go about doing it anyway if I had to.
The Plan
First off, you need a plan. Just diving right in would be dangerous. Instead, I would first perform an audit of the codebase. If you haven't already, read through the Helix guidelines pretty carefully.
You'll need to answer these questions:
- What are some similar themes to classes, so that I might group them together as a module?
- Are these modules likely to change frequently?
- Does the module have presentation (HTML/CSS)?
- Does the module depend on other modules?
- Where does this content currently live in Sitecore?
Infrastructure
You should check out Habitat repo and get a local instance setup. Habitat has a lot of good practices in it for setting up the infrastructure. At this day and age, it's recommended that you have some sort of repeatable build and setup scripts. Habitat has a bunch of gulp tasks that can be used as a starting point for building something that's right for you.
Creating the Modules
After identifying the modules in planning, I would then start creating them one at a time. I would not rename the existing projects.
For an example, let's say I identified a Calendar Feature in planning. I would create the Feature.Calendar
project and refactor all the related code into that project. Before moving onto the next module, I would build the solution and test it to make sure it still works. Having unit tests could speed this up considerably.
Things to Consider
- Sitecore items could contain fully qualified namespaces (ex: Controller renderings). Be sure to update these.
- if you serialize all your items, you may be able to speed this up by doing a text search in your serialization folder
- Foundation modules can reference other Foundation modules, but Feature modules cannot reference other Feature modules (same deal for Project modules)
- Think about how you're going to deploy this to environments
Helpful Sources
Disclaimer
This is in no way a step-by-step in how you should do this. My intent is to guide you in the correct direction and get you thinking about what's involved, should you choose to go this route.