【问题标题】:Visual Basic 6 public variables to propertiesVisual Basic 6 公共变量到属性
【发布时间】:2009-08-27 08:22:49
【问题描述】:

我正在 VB6 中处理带有公共变量的巨大对象的遗留项目。 我想将这些公共变量转换为私有变量/属性组合。 有没有一些工具可以让我进行这些转换?(最好是一次类中的所有变量)

谢谢

【问题讨论】:

    标签: class properties vb6 refactoring


    【解决方案1】:

    不要进行转换,不需要。 VB 编译器会自动为所有公开的类(即在 COM DLL 中导出的所有类)执行此操作,并且所有其他字段都不需要,因为这些字段仅在内部使用,并且用户的字段和属性之间没有区别。

    VB6 是唯一能做到这一点的语言,它根本不允许公共字段,并隐式转换它们。

    回顾一下:VB6 中的公共变量没有任何问题,因为公共变量通常的缺点不适用于它们。特别是,它们不会破坏封装。

    【讨论】:

    • 是的,我知道这一点,但我还必须在这些属性中设置一个特殊变量(我知道这不是一件好事,但我必须这样做)
    • +10!一个有趣的小问题证明编译器可以做到这一点。假设您有一个修改其参数 x 的例程 Convert(ByRef x as Double)。如果您使用公共变量调用它,例如 Convert(myobj.Prop) - 更改后的值 不会 存储到公共变量中。这是因为正如 Konrad 所描述的那样,它被包装为一个属性。我相信事实上这也发生在私人课程和公共课程中。因此,正如 Konrad 所说,使用公共字段不会破坏封装,因为它们可以随时被完整的属性替换而不会改变客户端的行为。
    • 如果您将公共变量迁移到公共属性,它仍然坚持打破二进制兼容性:(
    【解决方案2】:

    MZ-Tools 是一个免费插件,具有允许将公共变量转换为属性的功能。

    【讨论】:

      【解决方案3】:

      我不知道任何用于 VB6 的重构工具,但我会通过编写脚本来扫描源文件、搜索与“Public Dim ...”匹配的行并将这些行替换为适当的行来解决问题“Private Dim ...”和属性访问器。

      【讨论】:

      • 很好的答案 - 虽然 Dim 是可选的,但只写 Public XPublic X As sometype 是合法的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多