最佳实践:选项推断

时间:2009-03-20 20:27:44

标签: vb.net visual-studio-2008 option-infer

您认为在项目中使用Option Infer的最佳做法是什么?

在Visual Studio 2008中,Option Infer是一个指令,它允许编译器通过查看分配给它的内容来推断声明变量的数据类型。

这是VS2008中的一个关键功能,广泛用于LINQ语句和查询。但是,启用Option Infer可能会给未来的维护程序员带来陷阱。

5 个答案:

答案 0 :(得分:18)

C#使用的类型推断(因此我推测其他.net语言)非常精确(非常好)。如果类型清晰且明确,编译器将仅允许该语句。因此,结果并不是真正的精确损失......仅仅是因为你在保存开发人员不止一次地说明类型。您正在减少代码中的重复。

(编辑:此外,重要的是要意识到结果仍然强类型。编译器知道,在编译时,确切地知道变量的类型。有一个没有就像一个涉及的变种。如果你输入var x = 42;它只是想出x是一个int,因为你在右边放了一个int,这样可以省去一些打字和复制)。

未来维护程序员可能无法理解的唯一原因是他们首先不了解类型推断的语言特征。但我认为,期望并要求维护程序员了解语言功能,而不是因为担心未来的程序员不会了解语言功能,而是要避免使用良好的语言功能。

我想如果您处于这样一种情况:知道未来的程序员是初级的,而且对语言知之甚少,那么也许你会避免一些事情。但这让我想知道你是否应该考虑其他语言,甚至是像Access这样的“平台”,它是“真正编程”的混合体,也是非程序员可以做的事情。

答案 1 :(得分:9)

这是我的建议:

如果您已设置Option Explicit On和Option Strict On(在任何级别)

  1. 在IDE和项目属性中关闭Option Infer
  2. 在需要时打开代码文件中的Option Infer。这可确保代码易于阅读,并且当代码打开时,它会提醒读者注意其使用,并提醒他们将鼠标悬停在var上以查看其类型。
  3. 当选项明确关闭时......

    转向选项Infer On允许编译和运行的旧VB6代码更好地编译和运行,因为编译器在编译时为变量分配类型,而不是允许var进行后期绑定。但是,应该进行测试以确保变量在其生命周期中不存储多种类型。

    注意:这不能代替端口到.NET的VB6代码的正确重构。变种很糟糕,孩子们,mm'kay?

答案 2 :(得分:4)

我看到的大多数错误都与Strict和Explicit有关,但有些错误与Infer有关。对于VB,我想这个 选项严格打开:选项显式打开:选项推断关闭 是最好的起点。它确实使写入For Next变得更加麻烦,但它确实意味着对你的意图毫无疑问。

答案 3 :(得分:2)

VB.Net类型推断不能在Partial Trust环境中的aspx页面中使用 ...... 通常,VB.Net默认选项使我们的生活更加艰难。 在VB9中,默认情况下关闭有用的Option Infer。 我们不能写Option Infer On ... 我们不能写<%@ Page ... infer =“true”%>在页面顶部... 我们无法写入web.config ... 有人忘记了VB.Net。

......                                                                   

见这里:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321981

答案 4 :(得分:-1)

我认为这是一个安全的选项,因为你不能跨方法边界传递“Var”类型。我不是VB或Javascript Variant类型的忠实粉丝,但C#中的Var非常方便。如果您计划使用Linq,我不会关闭该选项。

- 亚光