首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理大量的输入参数,输出

处理大量的输入参数,输出
EN

Stack Overflow用户
提问于 2008-12-08 22:24:46
回答 9查看 578关注 0票数 3

我需要做一个复杂的计算。在我的例子中,创建Calculator类(使用策略模式抽象)似乎是最自然的。

要执行计算,类需要接受大约20个输入,其中一些输入是可选的,其中一些输入可能在将来发生变化。一旦调用计算()方法,需要输出大约20个不同的变量。

有几种方法可以实现这一点。

  • 输入作为参数传入计算方法
  • 输入通过计算器的属性传入
  • 将输入封装到自己的类中,然后传递给计算()方法。
  • 由Outputs ()返回的输出,封装在类中
  • 填充到传递给计算()方法的参数中的输出
  • 调用Outputs ()之后,从计算器的公共属性中检索输出

所有这些方法都有优缺点。你会怎么做?

更新:谢谢你的反馈。

这个计算器的目的是生成一个引号。输入包括客户地址、利率、目标利润、附加费用、产品标识等。产出包括报价、实际利润、更多费用等。

我已经创建了ICalculateInput和ICalculateOutput接口以及它们的具体类,系统现在运行得很好。Calculator类还继承自ICalculator接口(由于所涉及的计算因产品来源于哪个公司而有很大差异)。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-12-08 23:11:56

大多数人建议使用“参数类”和“结果类”。我同意这种方法,但在我看来,您的参数可分为几个类别。也许您可以为所需参数创建一个参数类,为可选参数或可选参数组创建一个单独的参数类。这样,您可以根据所需的计算类型创建不同的方法;

代码语言:javascript
复制
Result calculate(RequiredArgs requiredArgs) {
...
}

Result calculate(RequiredArgs requiredArgs, OptionalArgs optionalArgs) {
}

Result calculate(RequiredArgs requiredArgs, OptionalArgs optionalArgs, OtherOptionalArgs oOpitonalArgs) {
}

这将使您的API更易于使用。如果不想为不同的组创建类,也可以使用Maps,但这需要在计算引擎中编写更多的验证代码。通常,我更喜欢参数类,但必须更多地了解您的特定问题才能起决定性作用。

由于线程安全和对象可重用性,我不会将计算结果存储在计算引擎本身。维护无状态代码要容易得多。

票数 3
EN

Stack Overflow用户

发布于 2008-12-08 22:35:01

长参数列表变得繁重且容易出错。告诉我们更多关于应用程序和环境的信息,但是一般来说,传递某个类的对象或者使用列表之类的东西都是很诱人的。

我所做的处理它的一种相当巧妙的方法是使用复合模式。例如,在Java中,您可以创建一个参数接口,然后列出实现参数的对象列表。

票数 1
EN

Stack Overflow用户

发布于 2008-12-08 22:35:32

根据经验,不要创建接受3-4个参数以上的方法。

您不应该在JavaScript中做的事情:

代码语言:javascript
复制
var addUser = function (name,surname, age, add1, add2, telephone) {
    //do something
};

与以上所述不同,它最好这样做:

代码语言:javascript
复制
var addUser = function (userDetails) {
    //Do something with userDetails.name etc...
};
//Then invoke the function by passing in an object:
var ud = {name : 'Andreas', surname : 'Grech', age : 20, add1 : 'bla', add2 : 'bla', telephone : 12343}; 
addUser(ud);

这样,您就可以在不破坏函数的情况下按任意顺序输入参数,甚至可以跳过一些参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/351165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档