What Are The Pros To Using "option Explict"
Apr 20, 2012All it really does is make me have to dim each variable, making it compile badly if I forget to dim a variable.
View 3 RepliesAll it really does is make me have to dim each variable, making it compile badly if I forget to dim a variable.
View 3 RepliesWhat are the pros and cons of standardizing on using Option Compare Text vs Option Compare Binary for VB.NET development?
- EDIT -Just some background since it seems like it would help - my development team has found it much easier to standardize on Option Strict On, Option Infer On, and Option Explicit due to their obvious advantages over the alternatives. What we haven't found as easy to standardize on is Option Compare Text/Binary as there seem to be advantages and disadvantages to both and different developers have differing opinions. Some of the arguments for each side have been as follows:
Some of the advantages/arguments for Option Compare Text:
It reduces verbosity in the code by removing the need for StringComparers and .ToLower() calls and StringComparison.OrdinalIgnoreCase all over the place Data needs are rarely concerned with casing, as evidenced by most databases being case-insensitive. Rarely would you ever really want to distinguish between THIS and This and this when doing a data comparison.
Certain specific use cases are simpler when you don't have to worry about casing. For example, handling ASP.NET control events where commands are sent to the codebehind as strings and casing-issues are difficult to track down as the compiler cannot help you. Think Select Case statements for <asp:repeater> events as an example.Many of the concerns raised about text comparison concern internationalization, which is often not that relevant to a lot of applications.VB specifically is case insensitive as a language, though Visual Studio helps you by at least enforcing consistency in your casing. SQL is case insensitive as well. Strings are the only place where you have to remember to worry about it, which highlights the awkwardness in ways you wouldn't normally notice it if you were worried about it everywhere.
Some of the advantages/arguments for Option Compare Binary:C# works this way, as do most other languages. It's somewhat unexpected to have alternate behavior and the unexpected is not good in programming.There is a slight performance penalty with Option Compare Text as evidenced by the IL generated on compile. Option Compare Binary doesn't have that penalty.Option Compare Text only makes certain parts of string handling case insensitive. But, it doesn't make it so that things like dictionary indexing are case insensitive by default. So, it's not like Option Compare Text actually makes it so that you don't have to worry about casing at all. If it only works half way, why bother?Programming is hard. It's best not to attempt to smooth over that fact. Worrying about string casing is part of the deal. Humans recognize THIS is different from This and tHiS. Of course your code should too - after all, they aren't really the exact same string.
I have a solution that contains many projects all using the same root namespace. No code files explicitly name a namespace. So lets say the root namespace is ExampleRootNamespace.Now a problem comes into play when I want to add an explicitly named namespace to one of the code files I am working on. I want to be able to isolate this code from the rest of the assembly to be able to run FxCop against it. So I add something like Namespace Interfaces.CSV to the code file.
This causes any code that references this assembly to need to say Imports ExampleRootNamespace.Interfaces.CSV. So far so good. I can even run FxCop against the assembly. The problem now is that in other assemblies I cannot say any longer things like:
Public class frmInputBoolean Inherits
ExampleRootNameSpace.frmFormTemplate
Visual Studio is now asking me to rename the namespace to:
Public class frmInputBoolean Inherits
Global.ExampleRootNameSpace.frmFormTemplate
There are hundreds of errors related to this. So my questions are:
1) Why would basically naming a namespace under the root for the first time cause issues with the program?
2) Are there any workarounds to this issue without renaming?
I also want to add that with regards to ExampleRootNamespace.Interfaces.CSV I am not referencing this anywhere in the codebase. I'm currently just referencing it from a unit test project. So I don't see why adding this namespace causes an issue.
On another programming related website, I saw this line in someone's signature. This is NOT the first time I've seen such sentiments, although this is the harshest:"People who work in VB or any variant thereof are not programmers, they are circus chimps throwing feces into an IDE..."VBA is my bread and butter and I can automate quite a bit of stuff with it. Yes, I know it lacks polish and some functionality, but why so much negativity toward it? On the flip side, what do other languages have that VB doesn't?
View 9 Repliesi am a seasoned vb6 and vb.net developer and where i currently work, they use VB6. Now, we develop a range of office plugins for a client, and they currently use vb6, they also do some other projects with vb6. I want them to change to vb.net They have asked me for a list of Pros for switching, and also some Cons.
The pros i have are: .Net is future proofed, VB6 will not be supported by Microsoft for much longer One standard platform to run on (.Net) removing problems of windows versions and missing dlls full OOP support and a generic Api for office application development. Integrate seamlessly with Java using bridging components (they are primarily a java house)Quicker performance On event application loading (in office) to help application performance. Application controls are loaded but the code to execute is only loaded when required, reducing application load on start up.Backwards compatible to Office and Outlook 2003
I have been reading up on Abstract classes and am thinking about utilizing them in an upcoming project.
I would like to know the pros and cons of using abstract classes from someone who has actually used them.
Additionally, I would like to know if the abstract class needs to be in it's own project or if they should be defined in an existing project and used within the application.
I would like to know the pros and cons of calling procedures with Call Keyword and without Call in VB.NET?
Private Sub ProOne()
// Code Are Here
End Sub[code].....
Here is the use case: I am making an app that will email HTML Newsletters. The app will also email a plain text version of the newsletter as an alternate view. The way I see it there are two ways of going about this when using the system.net.mail namespace. What are the pro/cons of these two ways, or is there a another way that I am missing?
[Code]...
I really like the coding speed that vb.net provides, but I don't like the possibility to forget to declare variable types, return types of functions, etc. and that is why in each class I use[code]..
Is there a way to define those two options on the project/solution level?
the combo box style 1 has both the drop down option but also a manual entry option. I need to know how to code it so that when you manually enter data, it takes that data and places it in a text message "The shipping charges for "data" is $15" displaying in a text box. Shouldn't be hard but have developed a mind block.
View 4 Replieswhat does these two code means in vb.net: Option Explicit on Option strict on i think option explicit means the compiler is not going to do any kind of conversion and i need to do all of them by the code;also it becomes case sensitive i.e;
[Code]...
I want my console application to be able to do one function I have when you click one option on the windows context menu, and another function when you click another option.
View 3 RepliesHow can I get round this error: Option Strict On disallows implicit conversions from
[Code]...
1. I have read that keeping Option strict on and Option infer off is good practice and will insure your code is tight and properly written. I would like input regarding this, pro's and con's from those who are in the know.
2. Having said that, I have set Option strict on and Option infer off in an existing program I wrote (that was working perfectly mind you) with them off and on respectively. I went through and cleaned up all the errors on the 'need AS' and casting of variables, but one is leaving me a bit put out.[code]
I have also read where using My.Computer.System.Directory.GetFiles() instead of System.IO.Directory.GetFiles() is probably not a good thing, but when I change to this I get no error, but also no dataI am thinking I should stay with the strict on and infer off but am really slogging through getting this code correct.Running Win7 on Dual Quad Core XEON Intel Extreme with 8Gb RAM.
I am writing a text editor program and I have written the new, open, save as, exit menu items but I am struggling with writing the save option.Now I have created the menu itself (well vb did, I just used insert standard items) but how do I code up the save menu option so that it updates the current document or if the documnt has not yet been saved bring up the save file dialog.Here is the code I have so far
Public Class Main
Private Sub NewToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewToolStripButton.Click, NewToolStripMenuItem.Click[code]....
I know I have some finishing touches such as messages and error handling and stuff but at the moment I want to get all the basics working,I think the save menu option is all I am struggling with at the moment.
Using VS2008, targetting framework 3.5, trying to update some VB4 code. Yes, VB4.I have a bunch of legacy code I'm trying to update, and I had the idea of trying to work through it by executing the old code, working out what was causing each error as I came to it, solving the problem, and then moving on.In order to do this, I have sinned and set Option Strict Off, Option Explicit Off and Option Infer On.Yes, I'm going to hell for this.Problem is, I'm still getthing errors that various things haven't been declared.All of these the items showing errors are in the form: itemName(obj)Is my problem that the compiler thinks that these are method calls for methods which haven't been declared?PS: For anyone wanting to tell me not to use these settings, I already know
View 2 RepliesI have to take over a project written in vb.net, which contains more than 400k lines of code written in option strict off mode. I want to build it under option strict on first before I do anything else -- which maybe converting it into C#. I found there's thousands of lines of code raises compilation error, mostly are about implicit type casts. Is there any tool would help to make it compile under option strict on mode if I don't want to correct every single line manually? Because it's really painful to add CStr/CInt invocation into every line of Code myself.
View 3 RepliesI turned Option Strict On and i get an error on all the ".Cells" lines saying option strict on disallows late binding.
a = 1
b = 3
c = 2
d = 1
With oSheet
[CODE]..................
[Code]...
I really prefer to keep Option Strict On. the proper way to do this?
I have inherited a VB.NET application that I need to compile so I can run dorkumentation on it. I first received "Option Strict On disallows implicit conversion from x to y" errors, so I turned off the Option Strict option in the Project file.
So why do I still fail with the same error message?
I have two comboboxes which are related to each other. When a make a choice in the first there are different choices possible in the second. So far so good. But is it possible to remember the second choice when i change the first? the program should select the the option in the second if possible or other select the first option.[code]
View 4 RepliesPossible Duplicate: Best Practices: Option Infer What is the best way to mix VB.NET's Option Strict and the new Option Infer directives? I am developing a old solution, that was translated from VB6 to the VB.NET.Actually, the default options in files are
Option Strict On
Option Explicit On
I want to use LINQ, and found that is easier to use also the Option Infer On. Less to write, less (so, easier) to read.However, a (conservative, from my point of view) part of the team keeps the Option Infer Off and insist do not use it at all, without explicitly explain the causes.In your opinion, what are the "dangers" of using Option Infer On, along with other two options (Strict and Explicit, both On)?
Dim frm As mshtml.HTMLFormElement
Dim sel As mshtml.HTMLSelectElement
Dim hi As mshtml.IHTMLElementCollection
Dim inp As mshtml.HTMLInputElement
[code].....
Looks to me that childnodes object has a more specific type. But what? Not ihtmlcollection. The type support some item interface.
I'm creating a Setup Project (in Visual Studio 2008) for VB.NET application, everything works fine but I want to ask how to put an option for shortcuts. I mean, i know how to put shortcuts to desktop and start menu but I want some kind of checkbox where you'll have an option to put those shortcuts or not to?
View 3 RepliesTitle says it all really, should I have it off unless I'm having an error, or simply have it on all the time?
View 10 Replieswhat do you thinkg about comment below? original article url is also suggested to read.I didnt get why my code will be faster if i use it on. anyone has good knowledge about it?
Although Visual Basic .NET allows you to perform implicit type conversions and late binding, you should avoid these practices. Implicit type conversions and late binding may lead to severe performance problems, runtime errors, code that is difficult to read and maintain,and sub-standard programming practices.Many VB.NET professional programmers believe that leaving OPTION STRICT OFF by default was perhaps Microsoft's worst decision in the VB.NET implementation. Use OPTION STRICT ON.
When user right clicks on any file/folder in any drive; I want to show my own option there like--- copy this file ushing rushcopy when user clicks this my own exe should be able to capture this arguments of filepath and should run rushcopy.exe with it...
[Code]....
i want to make a custom instaloler for my ProjectI made a web browser and well.I want to add tabs Make it so you do not have to click go you can hit the return Key falso i want to make it where they have to enter a free 10 diget code i make and give out. iks this possible?one last thingi cannot figurel out how to print save or open a Text Box that i want to make kinda my own simple version of the notepad?sorry so manny questiuon kind new but kinda notIf you want one of the webbrowsers i made email me or tell me i made a couplewow i feel stupid is there anyway to have bookmarks option fr people
View 5 RepliesI have an old programme that was written with 'option strict off' I have been steadily working through it mainly sorting out casting issues but have come up against some that I dont understand.for instance I have a checkbox called tickbox
dim Tickbox as new checkbox
later in the code
dim blah as boolean = Me.Tickbox.CheckState
but option strict insists i cast it as a boolean
dim blah as boolean = CBool(Me.Tickbox.CheckState)
surely the checkbox.checkstate is Booleean?
For debugging purposes, is it possible to get the value of Option Compare at runtime?
(I am working on a legacy Windows Forms application that uses InStr with the first parameter as String (three parameter version of Instr), without the third parameter that is then determined by Option Compare. Option Compare Text supposedly makes InStr case-insensitive; the default is Option Compare Binary.)