21

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

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

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

4

5 回答 5

18

C# 使用的类型推断(因此我认为其他 .net 语言)非常精确(并且非常出色)。编译器仅在类型清晰明确的情况下才允许该语句。因此,结果并不是真正的精度损失......这只是让开发人员免于多次声明类型。您正在减少代码中的重复。

(编辑:另外,重要的是要认识到结果仍然是强类型的。编译器在编译时知道变量的确切类型。没有什么像变体那样涉及。如果你输入var x = 42;它只是计算出 x是一个 int,因为您在右侧放置了一个 int,从而节省了一些打字和重复)。

未来的维护程序员可能不理解它的唯一原因是他们根本不理解类型推断的语言特性。但我认为期望和要求维护程序员了解语言特性比避免良好的语言特性担心未来的程序员不知道它们更合理。

我想如果你知道未来的程序员是初级的并且对语言不是很了解,那么你可能会避免一些事情。但这让我想知道您是否应该考虑其他一些语言,甚至是像 Access 这样的“平台”,它是“真正的编程”和非程序员可以做一些事情的混合体。

于 2009-03-20T20:44:42.263 回答
9

这是我的建议:

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

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

When Option Explicit is Off...

启用 Option Infer On 可以让充满变体的旧 VB6 代码更好地编译和运行,因为编译器会在编译时为 var 分配一个类型,而不是允许 var 被后期绑定。但是,应该进行测试以确保 var 在其生命周期内不会存储多种类型。

注意:这不能替代对移植到 .NET 的 VB6 代码的适当重构。变种很糟糕,孩子们,嗯?

于 2009-03-20T20:57:47.927 回答
4

我看到的大多数错误都与 Strict 和 Explicit 有关,但有些错误与 Infer 有关。对于 VB,我认为这个 Option Strict On : Option Explicit On : Option Infer Off 是最好的起点。它确实使 For Next 的编写变得更加麻烦,但这确实意味着您的意图不会受到质疑。

于 2009-03-21T13:14:18.703 回答
2

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

……

请参阅此处:https ://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321981

于 2010-01-20T07:16:36.713 回答
-2

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

——马特

于 2009-03-20T20:44:05.853 回答