【问题标题】:Visual Basic Typing and Casting QuestionVisual Basic 键入和转换问题
【发布时间】:2009-08-14 15:01:14
【问题描述】:

我是使用 Visual Basic 开发的新手,但在 C#/C/C++/JAVA/Haskell 和其他一些方面拥有丰富的经验。

我维护代码并查找类型声明似乎很懒惰的代码示例有什么原因吗?我见过无数的字符串,它们只用作字符串类型,声明为对象。在 VB.NET 的面向对象特性出现之前,是否有必要确保方法可以接受多种类型?为什么会有人这样做?

【问题讨论】:

    标签: vb.net vb6 casting typing


    【解决方案1】:

    猜测...懒惰和旧的 VB6 习惯正在发扬光大。

    【讨论】:

    • 所以方法可以包含多个成员,对吗?与其重载函数,不如创建一个将 an 作为 any 的方法,然后用它做点什么?
    • 关闭,但很可能他们不必指定实际的数据类型。让一个方法接受一个可变参数列表与让一个方法接受一个任何类型的参数是不同的。听起来你所拥有的是“任何类型的一个参数”场景,这相当于在 VB6 中使用 Variant。
    【解决方案2】:

    在 VB6 中,有一个变体类型可以接受各种类型,并且应该谨慎使用。当 .Net 出现时,唯一的转换(除了大量更改您的代码)将使用 object 作为类型。

    如果代码看起来需要像您描述的那样采用多种类型的方法时的灵活性,我肯定会称其为 VB6 的宿醉效果或代码转换效果。

    但是,如果您看到声明为对象的字符串类型的代码,这远比 VB6 的懒惰和宿醉更糟糕!这听起来像是糟糕的设计和缺乏照顾。

    【讨论】:

      【解决方案3】:

      一些 VB6 专家,例如“the Mandelbrot Set”,建议对所有变量使用Variants。你可以称之为早期的鸭子打字?!这是相当有争议的——我们中的许多人认为这是灾难的根源。

      但肯定有很多这样的代码。在modern conversion tools 出现之前,将其升级到VB.NET 将是very hard。每次看到 Variant 时,Visual Studio 升级工具都会出现恐慌。如果您真的非常需要使用有限的资源进行升级,我想将所有变体更改为 Object 可能是最不坏的选择。显然,生成的代码会很糟糕。

      您可以逐步重构。当您处理某个代码区域时,您可以将声明更改为更具体的类型。

      【讨论】:

      • 那么你将如何调试这片变种的海洋:等待运行时出现问题并希望出现有用的错误?这种编码方式真的有效吗?不过答案很好。
      • 好吧,我一直都在避免这种方法,所以我想我不知道它是否真的有效!但如果它确实有效,我会感到非常惊讶。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      相关资源
      最近更新 更多