2011-10-25 5 views
0

グリッドがあり、ユーザーがフォームを閉じると、ログインしているユーザーの設定を保存したいのですが、2つの実装方法がありますが、この機能を実装する場所は不思議です。ユーザー固有の設定を保存する実装はどこにありますか?

  • 2つのメソッドで静的なユーティリティクラスを作成します
  • 私は新しいクラスを作成して、これをUserSettingsManagerのような名前にしますか?

今のところ私は2つの方法がありますが、私は将来さらに多くの方法が必要であると思います。私は何をすべきか?

編集: 私はすでにいくつかの回答を見ていますが、なぜあなたはそのオプションに行くのかと言うことができますか?

+0

D'ああ。申し訳ありませんが、「ユーザー固有の」部分に気づかずに回答を投稿しました。削除のために待っています...:p –

答えて

1

私はUserSettingsManagerのために行くだろう、妥当な音。

通常のクラスよりもテスト/擬似/注入が容易ではないので、絶対に必要でない限り、静的クラスを避けてください。

+1

あなたの最後の文章はあまりにも一般的です。静的クラスは、システムに依存しない不変状態、または全く状態を持たない場合に限り、完全に良好です。もちろん、状態はシステムに依存し、変更可能であるため、ここでそれらを避けることは正しい選択です。 – CodesInChaos

1

静的クラスはモックするのが難しいので、2番目の方法を選択します。

0

この機能に必要な状態は、現在のWindowsプリンシパルオブジェクトで既に使用可能であるため、静的関数を持つ静的クラスは問題ありません。

0

あなたが考えることができる最も簡単なことをしてください。静的ユーティリティクラスが最低限のコードを使用している場合は、それを行ってください。

アプリはこれで十分であるはずです。時には、それをある方法でコーディングした後、数回の方法を使用すると、突然より良い場所を見つけることができます。

今後、設定を保存する追加の方法(別のファイル形式やWebサービスなど)がある場合は、それをリファクタリングすることについて考え始めることができます。 常にリファクタリングを行い、簡単にすることができます。

0

Windowsは、ユーザー固有の情報を格納するための適切なセットアップ許可を持つフォルダを提供します。

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)またはEnvironment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)を使用して、対応するパスを取得します。

UserSettingsManagerのようなクラスでこれをカプセル化してください。この場合はstaticはシステムに依存し、変更可能ですので避けてください。

いくつかの参照:

関連する問題