|
Hi
1) Someone told me a function should have only one exit point - why is this?
2) Is it bad practice to use the input to the function directly. In example below, I compare intInput to a constant (10). Should I first equate intInput to a local variable and then use a local variable in the comparison. Just seems like extra code to use anothe variable?
3) As opposed to using 'Return True' or 'Return False' is it better to
use the function name - E.g. 'Test = False'
Private Function Test(byVal intInput as Integer) as Boolean
If intInput >10 then
Return True
Else
Return False
End If
End Function
-- modified at 5:15 Saturday 5th May, 2007
|
|
|
|
|
friend..
Answer to question 1 : i'm not sure of it.
Answer to question 2 : its a good practise, if u use a temporary variable
inside functions. this keeps the original value safe and secure. dont hesitate to write some more code for this, bcoz its usefull when it comes to large programs..
Answer to question 3 : there are no difference between these two, but it is good to use 'Test = False', becoz thats the correct syntax while writing a function. still it is not mandatory. the code will work...
|
|
|
|
|
Thanks
|
|
|
|
|
RichardBerry wrote: 1) Someone told me a function should have only one exit point - why is this?
It is an ideal but I think most developers are not religious about it. The main reason is maintainability, especially with longer, more elaborate functions. OTOH, in OO code, and in procedural code for that matter, functions should not be too long.
For the example you supply it doesn't matter much. Though it is more concise to write
Return intInput > 10
RichardBerry wrote: 2) Is it bad practice to use the input to the function directly. In example below, I compare intInput to a constant (10). Should I first equate intInput to a local variable and then use a local variable in the comparison. Just seems like extra code to use anothe variable?
No, it's not bad practice if all you're doing is effectively "reading" the input variable, as in your example. It is bad practice to modify the input variable and use the modification for subsequent processing. In this case you should take a copy.
RichardBerry wrote: 3) As opposed to using 'Return True' or 'Return False' is it better to
use the function name - E.g. 'Test = False'
This is VB .NET right? Using Return is the recommended way. Using the function name is retained only for backward compatibility.
Kevin
|
|
|
|
|
RichardBerry wrote: 1) Someone told me a function should have only one exit point - why is this?
A big reason is code maintainability. One way in, one way out. If the code has to be modified, you don't have to hunt down all the exit points in a function to make sure it's returning a good value.
RichardBerry wrote: 2) Is it bad practice to use the input to the function directly. In example below, I compare intInput to a constant (10).
Yes, it is, but not for the reason you think. The first thing a function should normally do, is validate the incomming data. This may require multiple tests on multiple parameters. It may also be helpful to put the validated data in local variables so you know that you're using validated data in the rest of the function code.
RichardBerry wrote: 3) As opposed to using 'Return True' or 'Return False' is it better to
use the function name - E.g. 'Test = False'
No, it's not. Quite the opposite. In some languages, including older versions of VB, you had to assign the return value to the function name. It's far more readable and maintainable to use a Return statement. The "assign to function name" method is still in there for backwards compatibility. I wish it would just go away...
Dave Kreskowiak
Microsoft MVP
Visual Developer - Visual Basic 2006, 2007
|
|
|
|
|
Dave Kreskowiak wrote: One way in, one way out. If the code has to be modified, you don't have to hunt down all the exit points in a function to make sure it's returning a good value.
Excellent point. In this case, it is easiest to have a temporary boolean variable such as result and plug it in with the single return statement...
|
|
|
|
|
Paul Conrad wrote: In this case, it is easiest to have a temporary boolean variable such as result and plug it in with the single return statement...
I use this technique quite regularly.
Kevin
|
|
|
|
|
Kevin McFarlane wrote: I use this technique quite regularly.
And it pretty much works out for the best too
|
|
|
|
|
Many thanks!
By the way - Is it normal to thank someone for their reply on a forum- I feel it's just plain good manners, but on the other hand it clutters the forum...
|
|
|
|
|
RichardBerry wrote: By the way - Is it normal to thank someone for their reply on a forum
Sure it is! It happens so rarely, that it doesn't really clutter up anything.
No problem.
Dave Kreskowiak
Microsoft MVP
Visual Developer - Visual Basic 2006, 2007
|
|
|
|
|
Hi All,
How to find out a particular Page of a MultipageTiff is
Color or Blak and White ????.
Thanks in advance.
Ram
ram
|
|
|
|
|
what is the shortcut key to disable the code.
I am using mouse to do that it seems a lenghty process
|
|
|
|
|
hi nilish,
this is the shortcut to comment/disable the code
Ctrl + k +c
Rupesh Kumar Swami
Software Engineer,
Integrated Solution,
Bikaner (India)
|
|
|
|
|
|
hi Nilish,
for enabling use following Key combination
ctrl + k + u
-- modified at 6:06 Saturday 5th May, 2007
Rupesh Kumar Swami
Software Engineer,
Integrated Solution,
Bikaner (India)
|
|
|
|
|
|
what is the utility of immediate window .i was getting opened in both the compile time as well as the run time
|
|
|
|
|
its to find the value of any int/char/string...
suppose you have a string STR that stores the value 'ABC' at runtime.
debug the project. after you have passed the line where this STR becomes equal to 'ABC', open up the immediate window and type '?STR' and press the enter key. you will see the value 'ABC' returned.
this is the same with any variable or any property of the objects.
try this..
when debugging, take the imm. window and enter '?Me.Name'. you can see the current form's name..
|
|
|
|
|
Then what's the diffeence between add-watch and Immediate window?
|
|
|
|
|
you can see the difference in the 'Watch window' itself..
during debugging, select any variable from the code and right click in the watch window and select the add watch option. you can see many options inside.
morover watch displays the value, type and context of the variable, but imm window shows only the value. also, imm window doesnt have the variety options that is provided by the watch window... got it?
|
|
|
|
|
The immediate window let's you query variables and execute individual statements while in design mode. You can read more here[^].
Dave Kreskowiak
Microsoft MVP
Visual Developer - Visual Basic 2006, 2007
|
|
|
|
|
|
Hakmeh Mohannad wrote: how can i make this possible
Learn how to write sql statements. Make sure you keep your code safe from injection attacks...
|
|
|
|
|
friend...for this, first learn to write simple queries..
for this case, only a simple select query will be enough, but first u must hav a table to store the uname and passwd... so first try those..
-- modified at 4:45 Saturday 5th May, 2007
|
|
|
|
|