Vb.net 更改选项严格设置
我正在开发一个大型VB.NET应用程序,如果“Option Strict”设置为off(由以前的开发人员设置)。我正在考虑把它设为on。这样做明智吗?我正在努力确定是否应该:Vb.net 更改选项严格设置,vb.net,Vb.net,我正在开发一个大型VB.NET应用程序,如果“Option Strict”设置为off(由以前的开发人员设置)。我正在考虑把它设为on。这样做明智吗?我正在努力确定是否应该: 让它保持原样。任何新的VB.NET应用程序都将option strict设置为true 改变它 我找不到MSDN对此的任何指导。我读到Strict选项是为了帮助VB6开发人员过渡到VB.NET 我知道需要做很多改变。我正在努力决定它是否值得。有一个新的选项推断设置,使得有时关闭Option Strict是可以的(因为Opt
我知道需要做很多改变。我正在努力决定它是否值得。有一个新的
选项推断
设置,使得有时关闭Option Strict是可以的(因为Option Infer取代Option Strict,因此它没有效果)
您可能会发现这篇MSDN文章很有帮助:
缺少选项推断,在大多数情况下,我强烈建议使用选项严格。但是,打开它时需要小心。即使修复了出现的任何新编译器错误,将现有项目从Option Strict Off更改为Option Strict On也会导致运行时异常,其中旧代码依赖于不再允许的隐式运行时转换
因此,我可能不会全盘改变你现有的项目。我可能会在很长一段时间内一次更改一个类/模块/文件,因为我必须维护这些模块。我现在要做的就是开始进行单元测试。我觉得单元测试和静态类型检查在防止错误的种类上有一些明显的重叠。单元测试对每个人都很有用,但是如果您没有从编译器中获得类型检查的好处,那么单元测试就特别重要
这就引出了我关于单元测试的更广泛的理念:不管你是谁,你都应该进行单元测试,至少是回归测试(当你修复一个bug时,为这个bug编写一个测试,以防止它在以后的编辑中重复出现)。如果您使用的是一种动态语言,并且VB带有选项Strict Off counts,那么您还应该遵循完整的测试驱动开发理念,在编写代码之前先编写测试,并争取100%的代码覆盖率。相反,使用静态类型检查的语言允许编译器清除测试驱动开发用来防止的许多错误,因此您可以通过编写不那么繁琐的测试(并不是说您根本不应该进行测试,而是100%的代码覆盖率可能是不必要的,测试优先原则也是如此).有一个新的
选项推断
设置,使得有时关闭Option Strict是可以的(因为Option Infer取代Option Strict,因此它没有效果)
您可能会发现这篇MSDN文章很有帮助:
缺少选项推断,在大多数情况下,我强烈建议使用选项严格。但是,打开它时需要小心。即使修复了出现的任何新编译器错误,将现有项目从Option Strict Off更改为Option Strict On也会导致运行时异常,其中旧代码依赖于不再允许的隐式运行时转换
因此,我可能不会全盘改变你现有的项目。我可能会在很长一段时间内一次更改一个类/模块/文件,因为我必须维护这些模块。我现在要做的就是开始进行单元测试。我觉得单元测试和静态类型检查在防止错误的种类上有一些明显的重叠。单元测试对每个人都很有用,但是如果您没有从编译器中获得类型检查的好处,那么单元测试就特别重要
这就引出了我关于单元测试的更广泛的理念:不管你是谁,你都应该进行单元测试,至少是回归测试(当你修复一个bug时,为这个bug编写一个测试,以防止它在以后的编辑中重复出现)。如果您使用的是一种动态语言,并且VB带有选项Strict Off counts,那么您还应该遵循完整的测试驱动开发理念,在编写代码之前先编写测试,并争取100%的代码覆盖率。相反,使用静态类型检查的语言允许编译器清除测试驱动开发用来防止的许多错误,因此您可以通过编写不那么繁琐的测试(并不是说您根本不应该进行测试,而是100%的代码覆盖率可能是不必要的,测试优先原则也是如此).试着将其设置为打开,看看调试应用程序时会出现什么中断。您可能只需要添加大量
.ToString()
和强制转换/转换。对我来说,如果能在2天左右完成,这是值得的。。。否则,等待直到你有这样的时间,它所做的不仅仅是帮助VB6的人;它警告各种无效的赋值;后期绑定、不完整的声明(Dim x
)等。C#中没有严格关闭选项,这说明问题。IMO需要Open Explicit。您还可以在Project、Properties、Compile和Warnings中进行一些设置,以帮助收紧代码。您可以将一些show stopper Strict错误转换为警告。请尝试将其设置为打开,并查看在调试应用程序时有哪些中断。您可能只需要添加大量.ToString()
和强制转换/转换。对我来说,如果可以在2天左右完成,这是值得的。。。否则,等待直到你有这样的时间,它所做的不仅仅是帮助VB6的人;它警告各种无效的赋值;后期绑定、不完整的声明(Dim x
)等。C#中没有严格关闭选项,这说明问题。IMO需要Open Explicit。您还可以在Project、Properties、Compile和Warnings中进行一些设置,以帮助收紧代码。您可以将一些show-stopper-Strict错误转换为警告。Option-Strict和Option-Infer可以共存。@neolik是的,我一开始在链接中误读了图表:如果声明变量时没有类型,这很重要