如果可以在以后简单地计算数据,是否应将数据保存到文件中?

时间:2017-01-11 04:01:58

标签: c# file class object

我正在创建一个程序,记录运行100米的短跑运动员的数据。为此,我设计了一个名为" Entry"用于记录用户运行100m的日期以及用户运行它的秒数的类。创建Entry对象时,用户输入日期和秒,并且对象计算其他一些数据,例如平均速度跑步和(估计)最高速度。当用户保存"条目"时,数据将被写入文件(其中包含其中之前日期的其他条目)。我的问题是应该只将日期和秒写入文件,并在从文件加载数据时再次计算其他信息(如平均/最高速度)?或者我应该只将所有数据写入文件,以便不再需要计算信息?

注意:关于将所有数据写入文件的一个问题是我必须创建某种方法,可能是构造函数,用于设置条目对象的平均/最高速度(加载数据时)从文件)。这意味着使用此对象的人可以自己设置平均/最高速度,这是我不想要的。我希望对象本身负责确定信息,没有其他人。

我包含了该类的一些代码,以防它有所帮助。 非常感谢任何帮助或建议!

    class Entry
{
    // Class fields
    private const int DISTANCE = 100;
    private const double ADDEDMPH = 3.5;
    private int _month;
    private int _day;
    private int _year;
    private double _seconds;
    private double _averageSpeed = 0;
    private double _topSpeed;

    // Constructors
    public Entry()
    { }
    public Entry(double secs)
    {
        _seconds = secs;
        validateSeconds();
        if(secondsChecked)
            calcTopAndAverageSpeed();
    }
    public Entry(int month, int day, int year)
    {
        _month = month;
        _day = day;
        _year = year;
        validateDate();
    }
    public Entry(double secs, int month, int day, int year)
    {
        _seconds = secs;
        _month = month;
        _day = day;
        _year = year;
        validateAll();
        if(secondsChecked)
            calcTopAndAverageSpeed();
    }

    // Class properties - when something is entered, it should be checked. If something is invalid, when it is accessed, it should return -1
    public double Seconds
    {
        get
        {
            if (secondsChecked == true)
                return _seconds;
            else
                return -1;
        }
        set
        {
            _seconds = value;
            validateSeconds();
            if(secondsChecked)
                calcTopAndAverageSpeed();
        }
    }
    public int Day
    {
        get
        {
            if (dayChecked == true)
                return _day;
            else
                return -1;
        }
        set
        {
            _day = value;
            validateDay();
        }
    }
    public int Month
    {
        get
        {
            if (monthChecked == true)
                return _month;
            else
                return -1;
        }
        set
        {
            _month = value;
            validateMonth();
        }
    }
    public int Year
    {
        get
        {
            if (yearChecked == true)
                return _year;
            else
                return -1;
        }
        set
        {
            _year = value;
            validateYear();
        }
    }

    // Class Methods
    // Calculating methods
    void calcAverageSpeed()
    {
        _averageSpeed = (DISTANCE / _seconds);
    }
    void calcTopSpeed()
    {
        _topSpeed = ((DISTANCE / _seconds) + ADDEDMPH);
    }
    void calcTopAndAverageSpeed()
    {
        _averageSpeed = (DISTANCE / _seconds);
        _topSpeed = _averageSpeed + ADDEDMPH;    
    }

}

1 个答案:

答案 0 :(得分:0)

如果要保存数据库中的所有信息,则需要空间。同样在插入过程中,您需要对其进行计算,因此插入时间会更长(不会更长,但这取决于您的性能目标)。如果您不保存它,那么您将需要更少的空间,但需要在检索期间计算。

因此,这一切都取决于您的要求。如果您没有任何特定要求,那么我不会将其保存在数据库中,因为它们可以被计算出来,并且没有限制(要求)在检索期间不应该计算它。

再次,取决于具体情况。