投稿者 魔界の仮面弁士  (社会人) 投稿日時 2008/11/14 07:13:07
グローバルな物が一概に駄目というわけではありません。
設定情報としては、「My.Settings.~」がよく用いられますが、
これもある意味では、アプリケーション全体にグローバルと言えますし。


> 共通の設定(変数)をひとつのクラスにまとめて
その共通設定クラスが、どのように管理されているのかが重要かと思います。
たとえば、アプリ内では、常に唯一の設定情報しかないように実装する場合もあれば、
複数の設定を用意しておき、それらを切り替えて使えるようにする場合もあるでしょう。

また、どのクラスがどのタイミングで生成されるのか/各設定値は読取専用になっているのか
それとも書換可能になっているのか…といった点も考慮して設計されると良いでしょう。


> BYREFで引数として設定を渡しています
まずは本当に ByRef でなければならないのかを確認してみてください。
共通設定クラスのメンバ操作を行うだけであれば、ByVal で十分なはずです。

一般論で言えば、ByRef 引数が必要になることは稀だと思います。
.NET Framework の標準クラスを眺めて見ても、ByRef はあまり使われておらず、
引数を書き換える必要がある場合(TryParse など)にのみ利用されている程度です。


> Byrefでの引数である「設定」情報を各クラスから変更しています
「各クラス」というのがどのような物であるのか分かりませんが、個人的には、
共通設定があちこちのクラスから変更されるような設計は、避けておいた方が
良いと思いますよ。管理が煩雑になってしまいますから。

共通設定を、(書き換えるのではなく)利用するだけであるならば、各クラスのメソッドに
引数として逐一渡すのではなく、コンストラクタで最初に渡しておくというのも手です。