C#を使用する場合は、「チームビルダー」タイプのアプリケーションを含むプロジェクトに取り組んでいます。
簡単にするために、ユーザーが「チーム」を作成する必要があるとします。 3つのチームから選択できます。
たとえば、各チームにはキャプテン、シューター、ランナーなどの「役職」があります。
各キャプテンには、「名前」、「スキル」、「年齢」などの異なる属性を持つ3つの選択肢があります。
これを視覚的に表現するには:
===>年齢
=> CaptainBTeam1
===>年齢
=> CaptaniCTeam1
===>年齢
チーム2
===>年齢
=> CaptainBTeam2
===>年齢
=> CaptaniCTeam2
現在、これらの属性はすべて事前定義されており、決して変更されません。したがって、CaptainATeam1は常に「James」、「Skillful」、「22」になります。
以上のことをすべて述べた上で、この情報は実行時に使用するために必要です。このアプリケーションは、なんらかの種類のデータベースに接続されることはなく、厳密にスタンドアロンアプリケーションとして実行されます。
私の質問は、これを行うための正しい方法は何ですか?
私が現在持っている考えは、チームとポジションごとにフラットファイルの形式でアプリケーションと共にデータをパッケージに格納し、必要に応じて実行時にアプリケーションにメモリに読み込ませることです。
しかし、これに類似したものを個別のクラス内にデータセットを作成することも検討しました(テストされておらず、メモ帳ですぐに記述されていませんが、コンセプトはそこにあります)。
class Team1
var Captain;
var Shooter;
var Runner;
DataSet ds_team1 = new DataSet();
//used to populate a dataset to be used for a DropDown style selection list
public void PopulateCaptains()
{
DataTable dt_caps = new DataTable("Capitans");
dt_caps.Columns.Add("Name");
dt_caps.Columns.Add("Skill");
dt_caps.Columns.Add("Age");
DataRow dr_cap1 = new DataRow("Cap1");
DataRow dr_cap2 = new DataRow("Cap2");
DataRow dr_cap3 = new DataRow("Cap3");
dt_caps.Rows.Add(dr_cap1);
dt_caps.Rows.Add(dr_cap2);
dt_caps.Rows.Add(dr_cap1);
dr_cap1["Name"] = "James";
dr_cap1["Skill"] = "Skillfull";
dr_cap1["Age"] = "22";
//so on and so forth.
}
上記の例は、アプリケーションのフォルダに保存されているフラットファイルをforeach
ループで書き込むだけではなく、コーディングが非常に面倒になることは明らかです。ただし、これにより、ユーザーがこのファイルの情報を操作できるようになり、プログラムが破損します。
それで、これに対処するための正しいアプローチは何でしょうか?
これに対処する正しい方法はありますか?
注これが主観的または広義の質問のあまりに多いと考えられる場合は、私に知らせてください。そうすれば、より多くの情報を探すか、より多くの情報を提供するか、何かを明確にすることができます。
お時間ありがとうございます。
まず第一に、あなたのコードはまともで読みやすいと思います。この実装で私がここで間違っていると思われるいくつかのこと:
グローバル空間でvar
を使用して暗黙的に変数を定義しています。これらを実際のタイプに変更することをお勧めします。 var
はローカルの暗黙的な定義のために予約されており、実際にはコンパイルされません。これについてのより詳細な説明は この質問 を参照してください。
あなたがしているのは、プログラムにデータをハードコーディングすることです。これは可能な限り避けたいものです。 XMLまたはJSONのシリアライゼーション/デシリアライゼーションでうまくいくので、それを実現するためにデータベースは必要ありません。このデータをデータベースで実際に使用することをいつか決めるかもしれません。または、将来、この同じデータを別のアプリケーションで使用したい場合があります。したがって、これら2つのイベントのいずれかで、シリアル化を行うことにより、このプロセスが10倍簡単になります。 XMLシリアル化 または JSONシリアル化 を参照してください。
お役に立てれば。
あなたのニーズに基づいていくつかの選択肢があります。
今日のプロトタイプは明日の量産コードであることを忘れないでください。 考えるデータを変更する必要がないからといって、しないデータを変更する必要があるわけではありません。あなたはほぼ間違いなくそうするでしょう。どのソリューションを選択しても、しばらくは行き詰まっている可能性が高いため、慎重に選択してください。