Try using it normally, it's placed that way in tutorials and most people's code for a reason.
The reason why it is done like this in tutorials is simplicity, not scalability. However I doubt that a lot of experienced people have everything in
main(), when it comes to developing a bigger project.
The
sf::RenderWindow is rather stored in a separate class. Due to its multiple responsibilities (event handling, drawing), it may even be referenced in multiple classes. It is difficult to explain that in detail without delving into general design decisions. For example, one could have a class
Renderer that holds a
sf::RenderWindow member (possibly as a reference).
Renderer then provides multiple
draw() overloads, which take logical game objects as parameters, such as
Player,
Enemy,
Scenery, etc. Internally, these are forwarded to
sf::RenderWindow::draw() calls, which has the advantage of abstraction -- if you want to draw an enemy differently, just change that one function instead of searching every
draw() call and finding out whether the passed sprite belongs to an enemy.