使用私有方法设置类变量

时间:2014-07-02 11:31:45

标签: c++ oop

说,我们有一个具有内部状态的类,实现为私有变量和确定该状态的方法。使用方法设置变量的oop-way是什么:

class Car
{
..
private:
float speed_;
float calculate_optimal_speed();
..}

创建一个函数calculate_optimal_speed(),它在其体内返回varible speed_或void set_speed()方法是否更好?

说,我们有一个很大的方法control_the_car()。 什么是首选,并将在代码的进一步开发中创建更少的问题:

float calculate_optimal_speed();
control_the_car()
{
..
speed_ = calculate_optimal_speed();
}

void set_optimal_speed();
control_the_car();
{
..
set_optimal_speed();
}

一方面,实现set_optimal_speed()允许使用较少的代码修改来更改speed_变量的类型。另一方面,返回值允许重新使用该函数,如果我再次需要它。这里有经验法则吗?

2 个答案:

答案 0 :(得分:1)

  

这里有经验法则吗?

是:编写满足您需求的最简单的实现。如果你以后需要不同的东西,重构。

这意味着您应该使用set_optimal_speed();实现,除非您有计算速度,不需要在类的私有状态中设置(如果这样做,请创建一个返回速度的函数,然后根据此函数实现set_optimal_speed();

答案 1 :(得分:0)

拥有getter和setter可以帮助您维护和组织代码

class Car {
private:
   // A private variable named speed_ of type float
   float speed_;
   float calculate_optimal_speed();
public:
   // Constructor
   Car(float x) { speed_ = x; }
   // OR
   Car(float speed_) { this->speed_ = speed_; }

   // A getter for variable speed_ of type T receives no argument and return a value of type float
   float getspeed_() const { return speed_; }

   // A setter for variable speed_ of type float receives a parameter of type float and return void
   void setspeed_(float x) { speed_ = x; }
   // OR
   void setspeed_(float speed_) { this->speed_ = speed_; }
}

control_the_car()
{
..
 x = calculate_optimal_speed()
 void setspeed_(float x) { speed_ = x; } ;
}

这样,如果您需要更新速度变量,可以使用Setter来更新它