Why static is bad ? In an engine class it's good to have all init using Init() function.
It's non-ideal, not bad. There are a lot of problems with it, however. It makes threading a pain in the butt. It makes writing tests against mock objects a pain in the butt. It makes some kinds of debugging a pain in the butt.
On a renderer it's nice to have RenderState class with static variables + Init() to avoid Renderer.cpp of 4000 lines.
That doesn't follow. Nothing about static variables makes the rest of your code smaller. You've got a false equivalency going on here.
Do you think struct + extern is better to use than class/struct with static ?
I don't understand what these have to do with each other.
Make functions or classes that take as parameters any dependencies they have and don't rely on statics. This is called Dependency Injection, and is something to strive for. That way, for instance, you can pass in a NullaryRenderDevice or something so you can test your renderer in a unit test on your build machine without needing an actual GPU, or a MockFileSystem that serves up only some cooked-in test files for tests. It lets you switch out things at runtime easily.
There are many places for static values. I use them extensively in reflection code, error dialog and assert code, memory space support, and so on. They're all hidden behind very special-case features and not part of the main game code or even the main game systems.
Everything else are systems/manager encapsulated in classes that require references to interfaces for other systems. e.g the GraphicsSystem requires a reference to IResourceSystem so that it can load textures and such on demand. The AudioSpace attached to any Space on the GameObjectSystem has a reference to an IAudioSystem so that sound sources in game can play sound. etc. No statics, no globals, no singletons, no service locator, none of that cruft. I can initialize the engine, systems, or spaces in any configuration I need, including initializing them completely differently in the release mode game, debug mode game, editor, asset baker, multiplayer server, etc.