[英]How to properly setup class design for my program (C# .Net)
我是一名自学成才的程序员。 我设计了一个赛马程序,该程序读取一个文件,该文件包含有关每场比赛中每匹马的信息,包括有关该赛马之前10场比赛的信息。 然后将信息输出为可读格式,类似于赛马形式或程序。
例如,在8月10日星期六,丘吉尔唐斯(Churchill Downs)有9场比赛,每场比赛有8匹马。 因此,当天的csv文件将包含72匹马。 这些赛马中的每匹也都会有最近10场比赛的统计数据。
我目前所做的是将csv文件中的内容读取到列表中。 然后,我将列表中包含的信息传输到马对象列表,该对象基本上存储了每匹马的所有信息。
我觉得使用类存储所有信息所获得的唯一好处是,由于不必记住索引,因此更容易操作该数据。
我想知道是否有更好的方法来设计此程序? 有见识吗?
如果您考虑一下这里真正发生的事情,那么您会拥有赛马,种族以及特定种族在特定种族中的表现。
因此,如果允许您的班级设计遵循此规则,则可能会有以下内容:
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
}
有了自己喜欢的课程设计后,您就可以开始考虑如何存储数据,以使其最容易进入课堂。 对于每个类,您可以有一个单独的文件,而不是一个包含大量重复数据的巨型csv文件,因此是Horses.csv,Races.csv,HorseRaces.csv。 最终,您可能希望从CSV升级到基于文件的小型数据库。
最终,您希望拥有三个列表: Horses
, Races
和HorseRaces
。 要显示这些列表,您可以遍历HorseRaces
,并且只需使用HorseRace
的属性以及随后的Race
和Horse
的属性即可轻松获取所需的所有数据。 例如, horseRace.Horse.Name
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.