グローバル変数について

全ての場所から読めることは悪ではない。
全ての場所から書けること=全ての場所を確認しないと変更された可能性を否定できないこと、が悪である。
……と思う。
全ての場所から読めるグローバル定数は悪ではなく、設定ファイルやログインユーザ情報の内容を読み込んで保持するグローバル変数はクラスにして特定手段以外でに変化させる可能性を消すなどすれば、悪ではなくなる。
DB接続は境界線あたりだと思う。グローバル変数にしない場合、DBを使うメソッドには全てdb接続インスタンスを引数として渡して持ち回る方式になったりするが、それだと渡した先でコミットされたりする可能性はあるので、グローバル変数と差はあんまり無い。2つのトランザクションを並行的に処理するとか、2つのDBに同時にアクセスする場合は、グローバル変数を参照する方式だと問題が出るが。
あと実際、メソッドを跨いだスコープが必要な読み込んだ画面表示内容や、ページングで現在表示中のページ番号はスコープがクラス内だからokなのだと思う。