我是使用 Visual Basic 开发的新手,但在 C#/C/C++/JAVA/Haskell 和其他一些方面有很多经验。
我维护代码并查找类型声明似乎很懒惰的代码示例有什么原因吗?我见过无数的字符串,它们只用作字符串类型,声明为对象。在 VB.NET 的面向对象特性出现之前,是否有必要确保方法可以接受多种类型?为什么会有人这样做?
猜测一下……懒惰和旧的 VB6 习惯正在发扬光大。
在 VB6 中,有一个变体类型可以接受各种类型,并且应该谨慎使用。当 .Net 出现时,唯一的转换(除了大量更改代码之外)将使用 object 作为类型。
如果代码似乎需要您为采用多种类型的方法所描述的灵活性,我肯定会称其为 VB6 的宿醉效果或代码转换效果。
但是,如果您看到声明为对象的字符串类型的代码,这远比 VB6 的懒惰和宿醉更糟糕!这听起来像是糟糕的设计和缺乏照顾。
一些 VB6 专家,例如“ Mandelbrot Set ”,建议对所有变量使用Variants。你可以称之为早期的鸭子打字?!这是相当有争议的——我们中的许多人认为这是灾难的根源。
但是肯定有很多这样的代码。在现代转换工具出现之前,将其升级到 VB.NET 将非常困难。每次看到 Variant 时,Visual Studio 升级工具都会出现恐慌。如果您真的非常需要使用有限的资源进行升级,我想将所有变体更改为 Object 可能是最不坏的选择。显然,生成的代码会很糟糕。
你可以逐步重构。当您处理代码区域时,您可以将声明更改为更具体的类型。