0

私は独学の初心者プログラマーです。私は、過去10レースの情報を含む、各レースの各馬に関する情報を含むファイルを読み込む競馬プログラムを設計しました。次に、情報を競馬のフォームやプログラムのような読み取り可能な形式で出力します。

たとえば、8月10日土曜日のチャーチルダウンズでは、9つのレースと8つの馬が各レースに参加します。したがって、その日のcsvファイルには72頭の馬が含まれます。それらの馬のそれぞれは、過去10レースの統計も持っているでしょう。

私が現在行ったことは、csvファイルでリストに読み込まれます。次に、リストに含まれている情報を、基本的に各馬のすべての情報を格納する馬オブジェクトのリストに転送します。

クラスを使用してすべての情報を格納することで得られる唯一の利点は、インデックスを覚えておく必要がないため、そのデータを操作しやすいことだと思います。

このプログラムを設計するためのより良い方法があるかどうか疑問に思っていますか?何か洞察はありますか?

4

1 に答える 1

4

ここで実際に何が起こっているかを考えると、馬、レース、および特定のレースでの特定の馬のパフォーマンスがあります。

したがって、クラスの設計がこれに従うことを許可すると、次のようなものになる可能性があります。

public class Horse
{
    public string Name { get; set; }
    public Gender Gender { get; set; }
    public Breed Breed { get; set; }
    public DateTime WhenBorn { get; set; }
    // etc...

    public TimeSpan GetAge()
    {
        return DateTime.Now - WhenBorn;
    }
}

public class Race
{
    public string Venue { get; set; }
    public DateTime WhenStarted { get; set; }
    public DateTime WhenFinished { get; set; }
    // etc...
}

public class HorseRace
{
    public Race Race { get; set; }
    public Horse Horse { get; set; }
    public int? PlaceFinished { get; set; } // null if did not finish
    public string JockeyName { get; set; }
    public double HorseWeighIn { get; set; } // weight of horse at time of race
    public double JockeyWeighIn { get; set; } // weight of jockey at time of race
    // etc...
}

public enum Gender
{
    Colt,
    Filly
}

public enum Breed
{
    // fill in breeds here
}

気に入ったクラスデザインができたら、データを保存してクラスに簡単に取り込む方法を考え始めることができます。繰り返しデータが多い1つの巨大なcsvファイルの代わりに、クラスごとに個別のファイルを作成できます。つまり、Horses.csv、Races.csv、HorseRaces.csvです。最終的には、CSVから小さなファイルベースのデータベースにアップグレードすることをお勧めします。

最終的には、、、およびの3つのリストが必要Horsesになります。これらのリストを表示するには、をループして、とのプロパティを使用し、続いてとのプロパティを使用するだけで、必要なすべてのデータを簡単に取得できます。たとえば、。RacesHorseRacesHorseRacesHorseRaceRaceHorsehorseRace.Horse.Name

于 2012-08-11T01:01:17.600 に答える