The disadvantages is that you cannot re-use the same variable name anywhere, so if you have a global named "position", you cannot use "position" anywhere else even if it would make sense. Yes, it is good practice to avoid globals, generally having a lot of globals means you are not implementing OO correctly.