苔藓植物分类:在VB中编写的函数因参数太多不能正常使用怎么办???

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/13 09:58:06

你好象已经问过了

一般参数不超过5个
如果你的参数过多导致无法正常编写代码,建议:
0:这是你的编程习惯问题,注意设计时计划好函数的作用,纸上写好代码然后在写上去

1:使用optional标示符,指定某个参数可省略,比如函数
public function fff(s as byte,optional a as integer=1) as byte
end function
不过使用了这个标示符以后,后面的参数必须都使用optional标示符

2:把一些不必要参数省略掉,比如通过全局变量能够传递的,或者通过一个参数能算出另一个参数的,或者根本用不着的(需要写完函数是才能知道)

3:把函数放进原来的有变量的地方,换句话说,如果你的函数比较短的话,或者不一定要单独放出来的话,还是放回去好,比如把加法单独列出来,那样既影响效率,也让程序难以编写。

4:不推荐定义一个类型来当参数,实际测试中函数的效率比分别输入参数值低

5:把函数扩展为类,把你的操作单独列出来,那么变量什么也不用全部传递,传给类的参数。不过还是需要看具体情况而定。

构造类型,我用C#写一个,大同小异

//这里构造参数
public class user
{
   public int age=0;
   public String name="";
   //....
   public DateTime dt;

//这里使用参数
void getinfo(user)
{
   var li=new link();
   li("Insert Into 表(年龄,...,入职时间) values('"+user.age+"','"+user...+"',...,'"+user.dt+"')")
}
//这里使用方法
private void button1_click(Object sender,EventArgs e)
{
   user us=new user();//实例化参数
   getinfo(us);
}

早在CSDN看到一哥们说,面试官问他当方法的参数超过100个时怎么办,他没答出来写个帖子求助,各种回答都有,部分人认为面试官脑子不正常,其实按我来说面试官真的能想到这个很了不起,最起码说明他懂得一点系统评估,参数传值太多不仅是不好书写那么简单,如果仅仅是书写问题,哪大不了写长点就好了,我写一百个谁有什么意见?像这样:

void getinfo(int age,...DateTime dt) 
{
   var li=new link();
   li("Insert Into 表(age,...,DateTime) values('"+user.age+"','"+user...+"',...,'"+user.dt+"')")
}

问题的核心是,参数传值太多影响程序运行效率,占用缓存啊,如果是事先构造好了,那就相当于分配了内存空间,不会被随时释放掉。所以构造办法还是有用的。

如果你的函数在模块中使用,可以定义一个类型来当参数。
如:
Public Type myType
a as string
b as string
End Type

Public Function myFunction(pre As myType)
debug.print pre.a
debug.print pre.b
End Function