我对来自非常温和的C背景的C ++有点新意,所以如果这个问题看起来很简单,请原谅。
我目前已经获得了一些C ++源代码来阅读和修改。
然而,在我看来,代码对于新手来说非常难看,但我不确定代码是否被认为是优秀的C ++实践。
基本上只有一个名为STORAGE的类,所有信息都是公开的。
class STORAGE
{
public:
STORAGE();
virtual ~STORAGE();
//DATA
int np,nn;
int istep;
int print_step;
//...and many more variables.
//METHODS
void eos(double rho, double e, double &p, double &cs);
void ThermalEnergy(double rho,double &e,double p);
void allocation();
void initialization();
void var_dt();
// and many more methods which return void,
};
现在当我阅读调用这些方法的算法时,我看到他们每个都修改了STORAGE的许多成员变量,许多方法在一长串方法调用中修改了同一组变量。许多方法对类型void A ()
使用这种风格,似乎很难在心理上跟踪大量成员变量的变化。
我的问题:在使用类时,这种编程风格是否与C ++相同?给一个方法访问该类的所有成员似乎有点危险,似乎可能会出现很多错误的代码。
在心理上对我来说,编写代码看起来要简单得多,如果我知道函数调用中唯一被修改的变量是函数的输入变量。
答案 0 :(得分:1)
“......所有信息都是公开的” 是的,这是不好的做法,与封装的基本概念相矛盾。课外的每个人都能看到并修改所有成员。理想的是:使数据成员保密,并提供公共get / set方法(根据需要)。
“使用类时,这种编程风格是否与C ++相同?” - 常见但不好。
“给一个方法访问班级的所有成员似乎有点危险” 我认为这很常见,成员函数应该可以访问成员变量。否则,还有谁会:)但是,如果您仍希望阻止它们修改成员变量,则可以使用将该函数声明为const。 (上面的Connor已经描述了这种方法)。