作为this的一种延续,我有以下新手问题:
构建一个需要大量输入参数并将这些参数直接输入到最终构造函数的包装类有什么区别?
不要误解我的意思,我认为多输入参数的事情非常难看,我正试图解决它,因为就像那个问题的海报一样,我需要处理类似计算器的类需要很多参数。但我不明白的是输入参数的包装类会解决什么问题,因为我还需要构建输入类 - 这和其他选择一样丑陋。
总结一下,我不这么认为:
MyClass::MyClass(int param1, int param2, int param3... int paramN)
{
this->param1 = param1;
this->param2 = param2;
this->param3 = param3;
...
this->paramN = paramN;
}
...与此有很大不同:
Result MyClass::myInterface(MyInputClass input)
{
//perform calculations
}
MyInputClass::MyInputClass(int param1, int param2, int param3... int paramN)
{
this->param1 = param1;
this->param2 = param2;
this->param3 = param3;
...
this->paramN = paramN;
}
当然,我尽量避免使用setter。
我在这里遗漏了什么吗?我很想对此有所了解,因为我还是一个相当新手的程序员。
答案 0 :(得分:3)
最大的好处是:
改变绝缘。你可以加 参数类的新属性 而不必改变那个类 使用它或任何来电者。
链接时减少代码
方法。如果MyClass
需要通过
它的参数,MyInputClass
消除了一堆代码。
答案 1 :(得分:3)
以下是一些原因,有人想使用参数类:
某些类不需要在构造函数中初始化每个字段。有时候,制定者是可行的方式。
答案 2 :(得分:0)
所有其他点都完全有效且完善。以下是一些权威文本的补充:
代码完成表明你将任何例程的参数数量限制为7 ,因为“七是人们理解的神奇数字”。然后继续建议传递超过七个参数会增加与调用范围的耦合,并且您应该使用结构化变量(ala MyInputClass
)。