0

在我当前的项目中,每个人都根据它们的本质和作用来命名变量和方法。这有利于快速理解代码,但是有很多长变量名会带来一些麻烦,例如将数据集复制到实体/对象时。因此,尽管您理解了代码,但可读性仍然受到打击。

veryLongVariableName.Id = datasetVeryLongVariableName.Id
veryLongVariablename.Something = datasetVeryLongVariableName.Something
etc.

使用 VB.NET 的 With 关键字会有所帮助。

With veryLongVariableName

    .Id = datasetVeryLongVariableName.Id
    .Something = datasetVeryLongVariableName.Something

End With

现在,我的问题是,有没有任何方法可以使用 With 或类似的东西,但同时用于多个变量?就像是:

With veryLongVariableName As a, datasetVeryLongVariableName as b

    a.Id = b.Id
    a.Something = b.Something

End With

我完全赞成描述性的命名约定,但它们确实会使事情变得混乱。特别是在VB中!

4

3 回答 3

4

不,这是不可能的。

With仅适用于单个对象。请参阅MSDN

但是,您可以嵌套With语句(尽管不建议这样做,因为您最终可能会使您的代码真的不可读)。

于 2010-10-29T14:20:41.520 回答
4

如果执行这些分配集的代码是单个逻辑操作的一部分,那么您可以将其重构为它自己的方法/函数调用。虽然这并没有具体回答您关于使用倍数的问题,但它会根据 Code Complete 等流行书籍中的建议提高可读性。

于 2010-10-29T14:22:00.227 回答
2

在幕后,With关键字所做的只是声明一个引用您指定的对象的临时变量。它的引用将被编译为与完全限定对象名称完全相同的 IL 代码,因此没有性能损失。您可以自己轻松地做到这一点:

Dim a as MyClass = veryLongVariableName
Dim b as MyOtherClass = datasetVeryLongVariableName

a.Id = b.Id
a.Something = b.Something
于 2010-10-29T14:34:26.030 回答