Advice on Best Practices for (Plugin) Development

As a C++ developer with a background in cs, I’m new to the Unreal Engine and I’m looking to build some custom plugins. I’ve already built UE from source and set up a separate repository for my plugins, seperate from project/engine folder. I have a few questions about organizing and structuring my plugins in the best way possible. I’d appreciate any tipps/help from experienced Unreal Engine developers.

  1. Public/Private Folder Structure: Should I strictly adhere to the Public/Private folder separation, or is it acceptable to have my public-facing API within the Public folder and the rest of the implementation details in a Private folder (or even folders named after components? What are best practices regarding this topic?
  2. Plugin Organization: Is it a good practice to have a separate module for the core functionality (MyModule) and another module for the editor-specific integration (MyEditorModule)? Or is there a more common/recommended way to structure plugin projects?
  3. Building Plugins: When developing plugins that are not intended to be embedded into a specific project (i think they are called engine plugins), what is the correct way to build them? Should I be using the UE Build Tool with the -plugin flag, as I’ve read?
  4. Documentation and Resources: I’ve been reviewing the UE documentation, but I feel like it doesn’t always cover the level of detail I’m looking for. What other resources (forums, subreddits, etc.) do you recommend consulting to get more deep insights?
  5. Coding Standards: Unreal has its own set of coding conventions. Should I strictly adhere to these conventions, even if I prefer a different coding style? Or is it common for developers to mix styles as long as the public interface follows the UE guidelines?