您认为在项目中使用Option Infer的最佳做法是什么?
在Visual Studio 2008中,Option Infer是一个指令,它允许编译器通过查看分配给它的内容来推断声明变量的数据类型.
这是VS2008中的一个关键功能,广泛用于LINQ语句和查询.但是,启用Option Infer可能会给未来的维护程序员带来陷阱.
C#使用的类型推断(因此我推测其他.net语言)是非常精确的(并且非常好).如果类型清晰且明确,则编译器将仅允许该语句.因此,结果并不是真正的精确损失......仅仅是因为你在保存开发人员不止一次地说明类型.您正在减少代码中的重复.
(编辑:此外,重要的是要意识到结果仍然是强类型的.编译器在编译时知道变量究竟是什么类型.没有涉及变量的任何东西.如果你键入var x = 42;
它只是想出x是一个int,因为你在右侧放置了一个int,从而节省了一些打字和复制).
未来维护程序员可能无法理解的唯一原因是他们首先不了解类型推断的语言特征.但是我觉得期望并且要求维护程序员知道语言特性,而不是因为担心未来的程序员不会知道它们而避免使用良好的语言功能.
我想如果你的情况是你知道未来的程序员是初级的并且对语言知之甚少,那么也许你会避免一些事情.但这让我想知道你是否应该考虑其他语言,甚至是像Access这样的"平台",它是"真正的编程"和非程序员可以做某些事情的混合体.
这是我的建议:
如果您已经设置Option Explicit On和Option Strict On(在任何级别)
在IDE和项目属性中关闭Option Infer
在需要时打开代码文件中的Option Infer.这可确保代码易于阅读,并且当代码打开时,它会提醒读者注意其使用,并提醒他们将鼠标悬停在var上以查看其类型.
当Option Explicit为Off时......
由于编译器在编译时为变量分配了一个类型,而不是允许var进行后期绑定,因此转向选项Infer On允许编译和运行的旧VB6代码更好.但是,应该进行测试以确保vars在其生命周期中不存储多种类型.
注意:这不能替代端口到.NET的VB6代码的正确重构.变种很糟糕,孩子们,mm'kay?