广泛的方法调用VB.NET

时间:2010-11-05 15:27:39

标签: vb.net refactoring

我刚刚写了这个:

ldb.Update(emp.Code,emp.number, "text", String.Empty, "EMP", emp.scheme, emp.status, emp.tod, emp.timestamp, emp.Code, emp.oldfrmd)

它远广!如何缩短此方法调用?问题是这不是我的方法,所以我无法编辑它。

2 个答案:

答案 0 :(得分:4)

这取决于您的担忧:

  • 参数太多?虽然你可以引入一个包含较少参数的代理方法,但是每个参数可以映射到几个原始参数,但是不能在不改变方法的情况下真正改变它。看起来您可能希望将此方法设置为emp的任何类型,但如果没有更多信息则很难知道。
  • 屏幕上太宽了?使用续行:

    ldb.Update(emp.Code, emp.number, "text", String.Empty, "EMP", _
               emp.scheme, emp.status, emp.tod, emp.timestamp, _
               emp.Code, emp.oldfrmd)
    

    (IIRC在VB10中实际上不需要“_”。)

  • 字符太多了?引入一些局部变量,可能会缩短最终调用,如:

    ldb.Update(code, number, "text", "", "EMP", scheme, status, _
               tod, timestamp, code, oldfrmd)
    

    (当然,你的整体代码会更大。)

答案 1 :(得分:1)

由于您无法更改方法签名,因此您必须将emp的所有字段传递给它。我倾向于编写自己的函数(请原谅我非常生疏的VB;我确定这有什么问题):

updateLdb(Employee e)

简单地称为ldb的功能,并没有做任何其他事情。使用单个字母作为变量名称通常是一个坏主意,但在这种情况下,它会保存您的行16个字符,而在单行函数中,“e”的信息量不比“emp”少。正如乔恩所说,如果你将这个函数移到Employee类中,你可以删除另外16个字符 - 它看起来确实属于那里。

我不会在长于一行或两行的任何函数中使用“e”作为变量或参数名称,但是在那个小范围内,我认为你可以在不显着牺牲可读性的情况下使用它。