这个问题是关于OOP设计的。 将所有参数传递给类构造函数 vs 将参数传递给成员函数有哪些优点/缺点?
在我的情况下,我知道程序开头的所有参数,我不需要在程序结束之前更改它们。
在C ++中,情况就是这样(尽管在我的代码中我需要解析更多的参数,而成员函数更复杂):
// All arguments in class constructor
Rectangle::Rectangle(float base, float height, string rectColor){
this->area = 0;
this->base = base;
this->height = height;
this->rectColor = rectColor;
}
void Rectangle::calcArea(){
area = base * height;
}
void Rectangle::paintRectangle(){
// use area
// whatever
}
VS
// Arguments in member functions
Rectangle::Rectancle(){
this->area = 0;
}
void Rectangle::calcArea(float base, float height){
area = base * height;
}
void Rectangle::paintRectangle(string rectColor){
// use area
// whatever
}
我使用的一个策略是:如果我需要多个成员函数中的变量,我将它变成一个类变量。那是好的还是最好的方法?
将所有内容传递给构造函数的一个坏处是它会有很多参数。而且我也不需要在我的主要中调用类成员函数。
请解释我应遵循的主要原则。
答案 0 :(得分:0)
将参数放入构造函数中的好处:
为特定函数添加参数的好处:
防止cnstructor中的参数太多
一般来说,尽量限制课程,不要让课程比需要的更灵活。除非你事先知道,否则后期需要这些功能。
答案 1 :(得分:0)
构造函数最重要的一点是它们使您的OOP代码保持一致。对于任何对象,如果您已经知道,使用属性创建的人必须存在,这是一种很好的方法。
即。没有" height"。
,矩形不能存在因此"最小参数构造函数"是很大的优势。 (在计算即区域时,对象需要的最小参数,可用和不能崩溃)
如果你有更多的参数,它们不是必需的,那么最好根据可能的情况创建更多的构造函数"经常使用"你的对象。